NdisClMakeCall 函数 (ndis.h)
NdisClMakeCall 在客户端创建的 VC 上设置传出调用。
语法
NDIS_STATUS NdisClMakeCall(
[in] NDIS_HANDLE NdisVcHandle,
[in, out] PCO_CALL_PARAMETERS CallParameters,
[in, optional] NDIS_HANDLE ProtocolPartyContext,
[out, optional] PNDIS_HANDLE NdisPartyHandle
);
参数
[in] NdisVcHandle
指定前面对 NdisCoCreateVc 的调用返回的句柄。
[in, out] CallParameters
指向 CO_CALL_PARAMETERS 类型的结构的指针,其中调用方指定了此连接的属性,例如,如果呼叫管理器支持的网络媒体和地址系列允许 QoS 规范,则呼叫目标地址、延迟、带宽和服务质量。
[in, optional] ProtocolPartyContext
(可选)指定调用方提供的对常驻上下文区域的句柄,客户端将在其多点 VC 上维护初始方的每一方状态。 如果给定的 VC 不表示多点连接,则此参数为 NULL 。 对于多点 VC,NDIS 在影响此特定方的所有后续调用中将此句柄传递回客户端的 ProtocolClXxx 函数。
[out, optional] NdisPartyHandle
指向调用方提供的变量的指针,通常位于调用方分配的参与方上下文区域中,如果设置传出调用的请求成功,则 NDIS 将返回一个句柄,该句柄表示与多点连接的初始一方。 如果 ProtocolPartyContext 为 NULL,则此变量(通常在客户端的 VC 上下文区域中)在传出呼叫设置完成后也会设置为 NULL 。
返回值
当 NdisClMakeCall 返回除 NDIS_STATUS_PENDING 以外的任何内容时,客户端应对其进行内部调用 ProtocolClMakeCallComplete 函数。 否则,NDIS 会在此操作完成时调用客户端的 ProtocolClMakeCallComplete 函数。
注解
NdisClMakeCall 为客户端发起的传出调用设置客户端创建的 VC 的属性。 客户端在尝试发出传出调用之前,必须使用 NdisCoCreateVc 设置 VC 。
调用 NdisClMakeCall 会导致 NDIS 将此请求转发到客户端与给定 NdisVcHandle 共享的调用管理器的 ProtocolCmMakeCall 函数。 CM 负责验证 CallParameters 中的给定数据。 它可以在与相关网络组件协商时修改客户端提供的数据,并且可以返回与最初提供给 NdisClMakeCall 的客户端不同的流量参数。 客户端的如果发生这种情况,ProtocolClMakeCallComplete 函数负责接受修改的调用参数;如果 CM 的建议调用参数不可接受,则负责取消调用。
因此, CallParameters 中的数据必须至少在呼叫设置期间对呼叫管理器保持可用。 当 NdisClMakeCall 返回NDIS_STATUS_PENDING时,客户端无法释放此缓冲区。 它必须延迟释放此客户端分配的资源,直到调用其 ProtocolClMakeCallComplete 函数。
如果 NdisClMakeCall 设置了多点连接,则客户端将全局为给定 VC 建立流量参数,除非基础网络媒体支持每方流量参数。
客户端的 ProtocolClMakeCallComplete 函数在 NdisPartyHandle 中使用任何返回的句柄之前,应检查NDIS_STATUS_SUCCESS的输入状态。 如果调用管理器在多点连接上设置调用的请求失败,则此客户端提供的变量的值无效。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | NDIS 6.0 和 NDIS 5.1 驱动程序支持 (请参阅 Windows Vista 中的 NdisClMakeCall (NDIS 5.1) ) 。 NDIS 5.1 驱动程序支持 (请参阅 Windows XP 中的 NdisClMakeCall (NDIS 5.1) ) 。 |
目标平台 | 桌面 |
标头 | ndis.h (包括 Ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | Irql_Protocol_Driver_Function (ndis) |