PROTOCOL_CM_DEREGISTER_SAP 回调函数 (ndis.h)

需要 ProtocolCmDeregisterSap 函数。 此函数由 NDIS 调用,以请求调用管理器代表面向连接的客户端取消注册 SAP。

注意 必须使用 PROTOCOL_CM_DEREGISTER_SAP 类型声明函数。 有关详细信息,请参阅以下示例部分。
 

语法

PROTOCOL_CM_DEREGISTER_SAP ProtocolCmDeregisterSap;

NDIS_STATUS ProtocolCmDeregisterSap(
  [in] NDIS_HANDLE CallMgrSapContext
)
{...}

参数

[in] CallMgrSapContext

指定调用管理器分配的上下文区域的句柄,调用管理器在其中维护其每个 SAP 的状态信息。 调用管理器从其向 NDIS 提供此句柄 ProtocolCmRegisterSap 函数。

返回值

ProtocolCmDeregisterSap 将 () 的操作状态返回为下列值之一:

返回代码 说明
NDIS_STATUS_SUCCESS
指示调用管理器已成功删除 SAP 注册,并释放了分配用于维护每个 SAP 信息的任何资源。
NDIS_STATUS_PENDING
指示调用管理器将完成异步取消注册 SAP 的请求。 呼叫管理器必须调用 NdisCmDeregisterSapComplete ,用于在操作完成时向 NDIS 发出信号。

注解

ProtocolCmDeregisterSap 根据需要与网络控制设备或其他特定于媒体的代理进行通信,以取消注册网络上的 SAP。 此类操作包括但不限于:

  • 与切换硬件通信
  • 与网络控制站通信
  • 与其他特定于媒体的网络代理通信
如果需要呼叫管理器与网络控制代理(例如网络交换机)通信,则应使用在其 ProtocolBindAdapterEx 函数中建立的网络控制代理的虚拟连接。 独立调用管理器通过调用 NdisCoSendNetBufferLists 通过基础微型端口驱动程序进行通信。 提供集成呼叫管理支持的微型端口驱动程序永远不会调用 NdisCoSendNetBufferLists。 而是直接通过网络传输数据。

此外, ProtocolCmDeregisterSap 必须在 CallMgrSapContext 中提供的每个 SAP 区域中释放任何动态分配的资源,并在将控制权返回到 NDIS 之前释放状态区域本身。

示例

若要定义 ProtocolCmDeregisterSap 函数,必须首先提供一个函数声明,用于标识要定义的函数类型。 Windows 为驱动程序提供一组函数类型。 使用函数类型声明函数可帮助 驱动程序的代码分析静态驱动程序验证程序 (SDV) 和其他验证工具查找错误,并且这是编写 Windows 操作系统驱动程序的要求。

例如,若要定义名为“ MyCmDeregisterSap ”的 ProtocolCmDeregisterSap 函数,请使用 PROTOCOL_CM_DEREGISTER_SAP 类型,如以下代码示例所示:

PROTOCOL_CM_DEREGISTER_SAP MyCmDeregisterSap;

然后,按如下所示实现函数:

_Use_decl_annotations_
NDIS_STATUS
 MyCmDeregisterSap(
    NDIS_HANDLE  CallMgrSapContext
    )
  {...}

PROTOCOL_CM_DEREGISTER_SAP函数类型在 Ndis.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 Use_decl_annotations 注释添加到函数定义。 Use_decl_annotations批注可确保使用应用于头文件中PROTOCOL_CM_DEREGISTER_SAP函数类型的注释。 有关函数声明要求的详细信息,请参阅 使用 NDIS 驱动程序的函数角色类型声明函数

有关 Use_decl_annotations的信息,请参阅 批注函数行为

要求

要求
最低受支持的客户端 支持 NDIS 6.0 和 NDIS 5.1 驱动程序 (请参阅 Windows Vista 中的 ProtocolCmDeregisterSap (NDIS 5.1) ) 。 NDIS 5.1 驱动程序支持 (请参阅 Windows XP 中的 ProtocolCmDeregisterSap (NDIS 5.1) ) 。
目标平台 Windows
标头 ndis.h (包括 Ndis.h)
IRQL <= DISPATCH_LEVEL

另请参阅

NdisCmDeregisterSapComplete

NdisCoSendNetBufferLists

ProtocolBindAdapterEx

ProtocolCmRegisterSap