PROTOCOL_CL_CLOSE_CALL_COMPLETE回调函数 (ndis.h)

面向连接的 NDIS 客户端使用 ProtocolClCloseCallComplete 函数。 所有面向连接的 NDIS 客户端都必须具有 ProtocolClCloseCallComplete 函数才能完成其启动的异步操作

NdisClCloseCall

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

语法

PROTOCOL_CL_CLOSE_CALL_COMPLETE ProtocolClCloseCallComplete;

void ProtocolClCloseCallComplete(
  [in]           NDIS_STATUS Status,
  [in]           NDIS_HANDLE ProtocolVcContext,
  [in, optional] NDIS_HANDLE ProtocolPartyContext
)
{...}

参数

[in] Status

指定客户端关闭此调用的请求的最终状态,可以是以下状态之一:

NDIS_STATUS_SUCCESS

调用管理器已成功关闭给定 VC 上存在的调用并停用了 VC。

NDIS_STATUS_XXX

由于某种 CM 确定的原因,调用管理器关闭呼叫的请求失败,NDIS 将 ProtocolCmCloseCall 函数返回的状态传播到客户端。

[in] ProtocolVcContext

指定客户端每 VC 上下文区域的句柄 这是客户端最初使用 NdisCoCreateVc 传递到 NDIS 或从其 ProtocolCoCreateVc 函数返回到 NDIS 的句柄。

[in, optional] ProtocolPartyContext

为表示多点连接的客户端创建的 VC 上最后一个剩余的一方指定客户端的每方上下文区域的句柄。 否则,此参数为 NULL

返回值

备注

如果给定的 VC 是由客户端创建的,并且 状态 NDIS_STATUS_SUCCESS,则客户端现在可以执行以下操作之一:

  • 使用 NdisCoDeleteVc 删除其 VC,并释放或准备重用其分配的上下文区域 () 。
  • 重新初始化其每 VC 上下文区域,并重复使用其 VC 以与 NdisClMakeCall 建立另一个连接。
如果 VC 是由调用管理器创建的,则调用 ProtocolClCloseCallComplete 时,客户端应将 NdisVcHandle 视为无效。 客户端不得使用此 NdisVcHandle 进行任何进一步的 NdisCl/CoXxx 调用。 在 ProtocolClCloseCallComplete 返回控制权后,调用管理器可以删除其 VC,从而导致调用客户端的 ProtocolCoDeleteVc 函数。 呼叫管理器甚至可以在创建的 VC 上调度另一个传入呼叫,从而调用客户端的 ProtocolClIncomingCall 函数。

示例

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

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

PROTOCOL_CL_CLOSE_CALL_COMPLETE MyClCloseCallComplete;

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

_Use_decl_annotations_
VOID
 MyClCloseCallComplete(
    NDIS_STATUS  Status,
    NDIS_HANDLE  ProtocolVcContext,
    NDIS_HANDLE  ProtocolPartyContext
    )
  {...}

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

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

要求

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

另请参阅

NdisClCloseCall

NdisClMakeCall

NdisCmCloseCallComplete

NdisCoDeleteVc

NdisMCmCloseCallComplete

ProtocolClIncomingCall

ProtocolCmCloseCall

ProtocolCoDeleteVc