PROTOCOL_CM_DROP_PARTY回调函数 (ndis.h)
ProtocolCmDropParty 函数是必需的。 NDIS 调用 ProtocolCmDropParty 请求调用管理器从现有多点调用中删除一方。
语法
PROTOCOL_CM_DROP_PARTY ProtocolCmDropParty;
NDIS_STATUS ProtocolCmDropParty(
[in] NDIS_HANDLE CallMgrPartyContext,
[in, optional] PVOID CloseData,
[in, optional] UINT Size
)
{...}
参数
[in] CallMgrPartyContext
指定调用管理器分配的上下文区域的句柄,调用管理器在其中维护其按方状态。 此句柄提供给调用管理器中的 NDIS ProtocolCmAddParty 函数。
[in, optional] CloseData
指向一个缓冲区的指针,该缓冲区包含应在删除方之前跨连接发送的特定于连接的客户端数据。 如果基础网络介质不支持在关闭连接时传输数据,则此参数 NULL。
[in, optional] Size
指定 CloseData处缓冲区的长度(以字节为单位)。如果 CloseDataNULL,则为零。
返回值
ProtocolCmDropParty 将作的状态作为以下值之一返回:
返回代码 | 描述 |
---|---|
|
指示呼叫管理器已成功删除参与方、发送任何关闭数据,并释放为其上下文区域分配的资源。 |
|
指示调用管理器将完成异步删除参与方的请求。 调用管理器必须在完成所有处理后调用 NdisCmDropPartyComplete,以通知 NDIS 和请求执行组件该方已删除。 |
|
指示 CloseData 已指定给调用管理器,但媒体类型不支持在连接终止时并发发送数据。 |
言论
ProtocolCmDropParty 与网络控制设备或其他特定于媒体的代理通信,以便其媒体从现有多点调用中删除参与方。 如果需要调用管理器与网络控制代理(例如网络交换机)通信,则应使用与网络控制代理在其中建立的网络控制代理的虚拟连接 ProtocolBindAdapterEx 函数。
如果 CloseData 为非NULL,并且连接终止时发送数据受其媒体类型支持,则调用管理器应在完成终止之前传输在 CloseData 指定的数据。 如果媒体类型不支持并发发送具有连接终止的数据,则调用管理器应返回具有NDIS_STATUS_INVALID_DATA的控制。
呼叫管理器还必须释放其分配并存储在 CallMgrPartyContext 的任何每方资源。 此外,调用管理器必须释放存储的缓冲区 CallMgrPartyContext 本身。 否则将导致内存泄漏情况。
示例
若要定义 ProtocolCmDropParty 函数,必须先提供一个函数声明来标识要定义的函数的类型。 Windows 为驱动程序提供了一组函数类型。 使用函数类型声明函数有助于 驱动程序代码分析、静态驱动程序验证程序(SDV)和其他验证工具查找错误,这是为 Windows作系统编写驱动程序的要求。例如,若要定义名为“MyCmDropParty”的 ProtocolCmDropParty 函数,请使用 PROTOCOL_CM_DROP_PARTY 类型,如以下代码示例所示:
PROTOCOL_CM_DROP_PARTY MyCmDropParty;
然后,按如下所示实现函数:
_Use_decl_annotations_
NDIS_STATUS
MyCmDropParty(
NDIS_HANDLE CallMgrPartyContext,
PVOID CloseData,
UINT Size
)
{...}
PROTOCOL_CM_DROP_PARTY 函数类型在 Ndis.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 Use_decl_annotations 注释添加到函数定义。 Use_decl_annotations 批注可确保使用应用于头文件中 PROTOCOL_CM_DROP_PARTY 函数类型的批注。 有关函数声明要求的详细信息,请参阅 使用 NDIS 驱动程序的函数角色类型声明函数。
有关 Use_decl_annotations的信息,请参阅 批注函数行为。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista 中支持 NDIS 6.0 和 NDIS 5.1 驱动程序(请参阅 ProtocolCmDropParty (NDIS 5.1) 。 在 Windows XP 中支持 NDIS 5.1 驱动程序(请参阅 ProtocolCmDropParty (NDIS 5.1)。 |
目标平台 | 窗户 |
标头 | ndis.h (包括 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |