PROTOCOL_CM_MODIFY_QOS_CALL回调函数 (ndis.h)

ProtocolCmModifyCallQoS 函数是必需的。 当面向连接的客户端请求更改现有虚拟连接的调用参数时,NDIS 会调用 ProtocolCmModifyCallQoS (VC) 。 如果基础网络媒体不支持 QoS, 则 ProtocolCmModifyQoS 应仅返回NDIS_STATUS_NOT_SUPPORTED。

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

语法

PROTOCOL_CM_MODIFY_QOS_CALL ProtocolCmModifyQosCall;

NDIS_STATUS ProtocolCmModifyQosCall(
  [in] NDIS_HANDLE CallMgrVcContext,
  [in] PCO_CALL_PARAMETERS CallParameters
)
{...}

参数

[in] CallMgrVcContext

指定调用管理器分配的上下文区域的句柄,调用管理器在其中维护其每 VC 状态。 调用管理器为其 ProtocolCoCreateVc 函数向 NDIS 提供了此句柄。

[in] CallParameters

指向 CO_CALL_PARAMETERS 结构的指针,该结构包含由面向连接的客户端为 VC 指定的新调用参数。

返回值

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

返回代码 说明
NDIS_STATUS_SUCCESS
指示调用管理器已成功将网络调用的参数更改为 CallParameters 中指定的调用参数。
NDIS_STATUS_PENDING
指示调用管理器将完成异步修改调用参数的请求。 当调用管理器已完成修改调用参数所需的所有操作时,它必须调用 NdisCmModifyCallQoSComplete
NDIS_STATUS_RESOURCES
指示调用管理器无法更改 VC 的调用参数,因为动态分配的资源不可用。
NDIS_STATUS_INVALID_DATA
指示调用管理器无法更改 VC 的调用参数,因为在 CallParameters 中提供的调用参数是非法的或无效的。
NDIS_STATUS_FAILURE
指示由于网络或其他面向连接的网络组件发生故障,无法将调用参数设置为提供的调用参数。

注解

ProtocolCmModifyQoS 与网络控制设备或其他媒体特定的代理通信(其媒体需要),以修改已建立的虚拟连接的特定于媒体的调用参数。 换句话说,如果需要呼叫管理器与网络控制代理 (通信,则网络交换机) 它应使用与其 在其 ProtocolBindAdapterEx 函数中建立的网络控制代理的虚拟连接。 通过调用 NdisCoSendNetBufferLists 与网络代理通信的独立呼叫管理器。 具有集成呼叫管理支持的微型端口驱动程序永远不会调用 NdisCoSendNetBufferLists。 相反,此类驱动程序只是通过网络将数据传输到目标网络代理。

与网络通信后,如果更改成功,则调用管理器必须使用新的调用参数调用 NdisCmActivateVc 。 这会通知 NDIS 和/或面向连接的微型端口驱动程序调用参数已更改,并为微型端口驱动程序提供验证这些参数的机会。

如果网络无法接受新的调用参数或基础微型端口驱动程序无法接受这些参数,则调用管理器必须将虚拟连接还原到尝试进行任何修改之前存在的状态,并返回NDIS_STATUS_FAILURE。

示例

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

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

PROTOCOL_CM_MODIFY_QOS_CALL MyCmModifyCallQoS;

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

_Use_decl_annotations_
NDIS_STATUS
 MyCmModifyCallQoS(
    NDIS_HANDLE  CallMgrVcContext,
    PCO_CALL_PARAMETERS  CallParameters
    )
  {...}

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

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

要求

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

另请参阅

NdisCmActivateVc

NdisCmModifyCallQoSComplete

NdisCoSendNetBufferLists

ProtocolCoCreateVc