面向连接的 NDIS 客户端使用 ProtocolClDeregisterSapComplete 函数。 接受传入调用的连接型 NDIS 客户端必须具有 ProtocolClDeregisterSapComplete 函数,才能完成使用 NdisClDeregisterSap启动的异步作。 否则,此类协议驱动程序注册的 ProtocolClDeregisterSapComplete 函数只需返回控制。
语法
PROTOCOL_CL_DEREGISTER_SAP_COMPLETE ProtocolClDeregisterSapComplete;
VOID ProtocolClDeregisterSapComplete(
[in] NDIS_STATUS Status,
[in] NDIS_HANDLE ProtocolSapContext
)
{...}
参数
[in] Status
指定要取消注册其 SAP 的客户端请求的最终状态,可以是下列选项之一:
NDIS_STATUS_SUCCESS
SAP 已关闭。 表示客户端以前注册的 SAP 的 NdisSapHandle,客户端存储在其 ProtocolSapContext 区域中的 SAP 现在无效。
NDIS_STATUS_FAILURE
NDIS 已将 AF 的状态标记为“关闭”,因此客户端调用时已释放由 NdisSapHandle 表示的关联 SAP发生 NdisClDeregisterSap。
NDIS_STATUS_XXX
由于某些 CM 确定的原因,调用管理器未能关闭 SAP 的请求,NDIS 传播了其返回的状态向客户端 ProtocolCmDeregisterSap 函数。
[in] ProtocolSapContext
指定客户端提供给其每个 SAP 上下文区域的句柄,最初通过 NdisClRegisterSap传递给 NDIS。 在调用管理器成功取消注册此 SAP 后,客户端可以释放其上下文区域或准备此上下文区域以供重复使用。
返回值
没有
言论
对 ProtocolClDeregisterSapComplete 调用指示调用管理器已处理客户端对 NdisClDeregisterSap 的上述调用。
除非调用管理器因某种 CM 确定的原因而取消注册,否则当调用 protocolClDeregisterSapComplete 时,客户端应考虑 NdisSapHandle 无效。 因此,ProtocolClDeregisterSapComplete 可以释放客户端分配的每个 SAP 上下文区域,或在后续调用 NdisClRegisterSap中重复使用。
示例
若要定义 ProtocolClDeregisterSapComplete 函数,必须先提供一个函数声明来标识要定义的函数类型。 Windows 为驱动程序提供了一组函数类型。 使用函数类型声明函数有助于 驱动程序代码分析、静态驱动程序验证程序(SDV)和其他验证工具查找错误,这是为 Windows作系统编写驱动程序的要求。例如,若要定义名为“MyClDeregisterSapComplete”的 ProtocolClDeregisterSapComplete 函数,请使用 PROTOCOL_CL_DEREGISTER_SAP_COMPLETE 类型,如以下代码示例所示:
PROTOCOL_CL_DEREGISTER_SAP_COMPLETE MyClDeregisterSapComplete;
然后,按如下所示实现函数:
_Use_decl_annotations_
VOID
MyClDeregisterSapComplete(
NDIS_STATUS Status,
NDIS_HANDLE ProtocolSapContext
)
{...}
PROTOCOL_CL_DEREGISTER_SAP_COMPLETE 函数类型在 Ndis.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 Use_decl_annotations 注释添加到函数定义。 Use_decl_annotations 批注可确保使用应用于头文件中 PROTOCOL_CL_DEREGISTER_SAP_COMPLETE 函数类型的批注。 有关函数声明要求的详细信息,请参阅 使用 NDIS 驱动程序的函数角色类型声明函数。
有关 Use_decl_annotations的信息,请参阅 批注函数行为。
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | 支持 NDIS 6.0 和 NDIS 5.1 驱动程序(请参阅 Windows Vista 中的 ProtocolClDeregisterSapComplete (NDIS 5.1)。 支持 NDIS 5.1 驱动程序(请参阅 Windows XP 中的 ProtocolClDeregisterSapComplete (NDIS 5.1)。 |
| 目标平台 | 窗户 |
| 标头 | ndis.h (包括 Ndis.h) |
| IRQL | <= DISPATCH_LEVEL |