NdisCancelSendNetBufferLists 函数 (ndis.h)
协议驱动程序调用 NdisCancelSendNetBufferLists 函数来取消网络数据传输。
语法
void NdisCancelSendNetBufferLists(
[in] NDIS_HANDLE NdisBindingHandle,
[in] PVOID CancelId
);
参数
[in] NdisBindingHandle
NdisOpenAdapterEx 函数返回的句柄,该函数标识取消适用的微型端口驱动程序或虚拟微型端口。
[in] CancelId
取消标识符。 此标识符指定要取消传输的网络数据。
返回值
无
备注
协议驱动程序将它从更高级别软件接收的 IRP 映射到 NDIS 网络数据。 NET_BUFFER_LIST结构列表描述了协议驱动程序发送到较低级别驱动程序进行传输的网络数据。 如果取消 IRP,协议驱动程序可以调用 NdisCancelSendNetBufferLists 函数来取消相应 NDIS 网络数据的挂起传输。
调用 NDIS_SET_NET_BUFFER_LIST_CANCEL_ID 传递给较低级别驱动程序以用于传输的每个NET_BUFFER_LIST结构的宏。 NDIS_SET_NET_BUFFER_LIST_CANCEL_ID宏使用取消标识符标记指定的数据包。
NdisCancelSendNetBufferLists 将取消使用指定取消标识符标记并与指定微型端口驱动程序关联的所有数据的传输。 在 NdisBindingHandle 参数中指定的绑定句柄标识微型端口驱动程序。
NdisCancelSendNetBufferLists 函数取消单个绑定上的网络数据传输。 若要取消多个绑定上的网络数据传输,协议驱动程序必须为每个绑定调用 一次 NdisCancelSendNetBufferLists 函数。
协议驱动程序必须确保 NdisBindingHandle 参数指定的句柄在调用 NdisCancelSendNetBufferLists 期间保持有效。 也就是说,在 NdisCancelSendNetBufferLists 返回之前,协议驱动程序不得调用 NdisCloseAdapterEx 函数来关闭绑定。
无法保证调用 NdisCancelSendNetBufferLists 会取消所有具有指定取消标识符的网络数据的挂起传输。 例如,如果协议驱动程序绑定到的下一个较低级驱动程序不提供 MiniportCancelSend 函数,则调用 NdisCancelSendNetBufferLists 不执行任何操作。
在所有情况下,NDIS 都会返回提交以传输到原始协议驱动程序的网络数据 ProtocolSendNetBufferListsComplete 函数。 NDIS 返回完成状态为NDIS_STATUS_SEND_ABORTED的已取消发送数据。 调用 NdisCancelSendNetBufferLists 与已取消NET_BUFFER_LIST结构的返回之间的延迟可能会有所不同,因此无法准确指定。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.0 及更高版本中受支持。 |
目标平台 | 通用 |
标头 | ndis.h (包括 Ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | Irql_SendRcv_Function (ndis) |