PROTOCOL_CL_INCOMING_CALL回调函数 (ndis.h)

ProtocolClIncomingCall 函数由接受传入调用的面向连接的客户端使用。 此类客户端必须具有 ProtocolClIncomingCall 函数。 否则,此类协议驱动程序的已注册 ProtocolClIncomingCall 函数只需返回NDIS_STATUS_NOT_SUPPORTED。

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

语法

PROTOCOL_CL_INCOMING_CALL ProtocolClIncomingCall;

NDIS_STATUS ProtocolClIncomingCall(
  [in]      NDIS_HANDLE ProtocolSapContext,
  [in]      NDIS_HANDLE ProtocolVcContext,
  [in, out] PCO_CALL_PARAMETERS CallParameters
)
{...}

参数

[in] ProtocolSapContext

指定客户端在注册 SAP 时最初提供的句柄,该句柄由呼叫管理器匹配到此传入呼叫产品/服务。

[in] ProtocolVcContext

指定客户端每个 VC 上下文区域的句柄,该区域以前通过其 ProtocolCoCreateVc 函数返回到 NDIS。

[in, out] CallParameters

指向缓冲区的指针,该缓冲区的格式设置为 CO_CALL_PARAMETERS 结构,该结构包含此提供的调用的调用参数。

返回值

ProtocolClIncomingCall 可以返回以下状态代码之一:

返回代码 说明
NDIS_STATUS_SUCCESS
客户端已接受传入呼叫套餐。
NDIS_STATUS_PENDING
客户端正在异步处理此请求,并将调用关闭操作完成后的 NdisClIncomingCallComplete 函数。
NDIS_STATUS_XXX
客户端出于某些驱动程序确定的原因拒绝了传入呼叫套餐。

注解

调用 ProtocolClIncomingCall 表示呼叫管理器已通过网络收到来自信号对等方的请求,以建立与该客户端的连接。 也就是说,设置此类连接的请求已定向到以前由此客户端向调用管理器注册的 SAP。

根据呼叫管理器支持的信号协议, ProtocolClIncomingCall 可以在协商接受传入呼叫套餐的过程中修改流量参数,以及/或者,如果呼叫管理器支持 QoS,则 CallParameters 中的服务质量规范。 如果客户端接受提供的调用,则客户端应从此缓冲结构复制随后需要的任何信息。

假设调用管理器发现客户端的修改(如果有)可以接受,则 NDIS 接下来,在表示与最初发起调用套餐的远程节点上客户端的连接的活动 VC 上发生传输时,会调用客户端的 ProtocolClIncomingCallConnected 函数。 如果客户端返回不可接受的修改的调用参数,则调用管理器可能会拆解它为此产品/服务创建的 VC,从而导致调用客户端的 ProtocolClIncomingCloseCall ,然后 是 ProtocolCoDeleteVc 函数。

示例

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

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

PROTOCOL_CL_INCOMING_CALL MyClIncomingCall;

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

_Use_decl_annotations_
NDIS_STATUS
 MyClIncomingCall(
    NDIS_HANDLE  ProtocolSapContext,
    NDIS_HANDLE  ProtocolVcContext,
    PCO_CALL_PARAMETERS  CallParameters
    )
  {...}

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

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

要求

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

另请参阅

CO_CALL_PARAMETERS

NdisClIncomingCallComplete

NdisClRegisterSap

NdisCmDispatchIncomingCall

NdisMCmDispatchIncomingCall

ProtocolClCallConnected

ProtocolClIncomingCloseCall

ProtocolCoCreateVc

ProtocolCoDeleteVc