PROTOCOL_CM_CLOSE_AF回调函数 (ndis.h)

ProtocolCmCloseAf 函数是一个必需的函数,它为呼叫管理器支持的地址系列释放每个打开的资源。

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

语法

PROTOCOL_CM_CLOSE_AF ProtocolCmCloseAf;

NDIS_STATUS ProtocolCmCloseAf(
  [in] NDIS_HANDLE CallMgrAfContext
)
{...}

参数

[in] CallMgrAfContext

指定调用管理器的每个 AF 上下文区域的句柄,最初由调用管理器的 ProtocolCmOpenAf 函数提供给 NDIS。

返回值

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

返回代码 说明
NDIS_STATUS_SUCCESS
指示调用管理器已成功释放或停用代表打开此地址系列的此实例的面向连接的客户端分配的任何资源。
NDIS_STATUS_PENDING
指示关闭地址系列打开实例的请求将以异步方式完成。 呼叫管理器必须调用完成所有此类操作后,NdisCmCloseAddressFamilyComplete

注解

ProtocolCmCloseAf 发布和/或停用调用管理器在其 ProtocolCmOpenAf 函数中分配的任何资源。 当该客户端打开地址系列时,调用管理器还应撤消它代表面向连接的客户端执行的任何其他操作。

如果 CallMgrAfContext 中存储的地址系列上有任何未完成的请求或连接仍处于打开状态,则呼叫管理器可以通过以下任一方式响应客户端关闭地址系列的请求:

  • 调用管理器可能会使请求失败并NDIS_STATUS_NOT_ACCEPTED。
  • 呼叫管理器可以返回NDIS_STATUS_PENDING。 在客户端关闭所有调用并取消注册所有 SAP 后,呼叫管理器可以关闭地址系列并调用 NdisCmCloseAddressFamilyComplete NdisMCmCloseAddressFamilyComplete 以通知客户端。 这是首选响应。

示例

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

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

PROTOCOL_CM_CLOSE_AF MyCmCloseAf;

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

_Use_decl_annotations_
NDIS_STATUS
 MyCmCloseAf(
    NDIS_HANDLE  CallMgrAfContext
    )
  {...}

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

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

要求

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

另请参阅

NdisCmCloseAddressFamilyComplete

ProtocolCmOpenAf