ProtocolClIncomingCall 函数由接受传入调用的连接型客户端使用。 此类客户端必须具有 ProtocolClIncomingCall 函数。 否则,此类协议驱动程序的注册 ProtocolClIncomingCall 函数只需返回NDIS_STATUS_NOT_SUPPORTED。
语法
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 可以返回以下状态代码之一:
| 返回代码 | 描述 |
|---|---|
|
客户端接受了传入呼叫套餐。 |
|
客户端正在异步处理此请求,它将调用关闭作完成后, NdisClIncomingCallComplete 函数。 |
|
由于某些驱动程序确定的原因,客户端拒绝了传入呼叫套餐。 |
言论
对 ProtocolClIncomingCall 的调用 指示调用管理器已通过网络收到来自信号对等方的请求,以建立与此客户端的连接。 也就是说,设置此类连接的请求已定向到以前由此客户端向调用管理器注册的 SAP。
根据呼叫管理器支持的信号协议,ProtocolClIncomingCall 可以在协商接受传入呼叫套餐的过程中修改流量参数;或者,如果呼叫管理器支持 QoS,CallParameters 的服务质量规范。 如果客户端接受提供的调用,客户端应从此缓冲结构复制它随后需要的任何信息。
假设调用管理器发现客户端的修改(如果有)可以接受,NDIS 接下来会调用客户端的 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的信息,请参阅 批注函数行为。
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | Windows Vista 中支持 NDIS 6.0 和 NDIS 5.1 驱动程序(请参阅 ProtocolClIncomingCall (NDIS 5.1)。 Windows XP 中支持 NDIS 5.1 驱动程序(请参阅 ProtocolClIncomingCall (NDIS 5.1) 。 |
| 目标平台 | 窗户 |
| 标头 | ndis.h (包括 Ndis.h) |
| IRQL | <= DISPATCH_LEVEL |