NDIS_POLL回调函数 (poll.h)
微型端口驱动程序实现 NdisPoll 回调函数,NDIS 将轮询接收指示并发送完成。
语法
NDIS_POLL NdisPoll;
void() NdisPoll(
[_In_] void *Context,
[_Inout_] NDIS_POLL_DATA *PollData
)
{...}
参数
[_In_] Context
指向驱动程序在创建 Poll 对象时提供的上下文信息的指针。
[_Inout_] PollData
指向 NDIS_POLL_DATA 结构的指针,驱动程序应使用该结构来执行接收指示和发送完成。 它还包含有关需要指示的 NBR 数量的详细信息。
注解
微型端口驱动程序在微型端口适配器初始化期间注册 NdisPoll 回调。 驱动程序在调用 NdisRegisterPoll 之前,在 NDIS_POLL_CHARACTERISTICS 结构的 PollHandler 参数上指定 NdisPoll 函数的入口点。
当驱动程序调用 NdisRequestPoll 时,NDIS 将首先调用 NdisPoll 回调。 当驱动程序在接收指示或传输完成方面向前推进时,NDIS 将继续调用 NdisPoll 。
可以在 PASSIVE_LEVEL 和 DISPATCH_LEVEL IRQL 中调用 NdisPoll 回调。 驱动程序不应假设其级别为哪个级别。
驱动程序必须检查NDIS_POLL_DATA结构的接收或传输参数,以获取它可以指示或完成的最大 NBR 数。
对于接收指示,驱动程序应:
- 提取最多可以指示的最大 Rx 数据包数。
- 初始化 NBR。
- 将它们添加到由位于NdisPollPollData 参数) NDIS_POLL_DATA结构中的 NDIS_POLL_RECEIVE_DATA 结构 (提供的 NBL 队列。
- 退出回调。
对于传输完成,驱动程序应:
- 提取最多可以完成的最大 Tx 数据包数。
- 完成 NBR。
- 将它们添加到 NDIS_POLL_TRANSMIT_DATA 结构提供的 NBL 队列, (位于 NdisPollPollData 参数 ) 的 NDIS_POLL_DATA 结构中。
- 退出回调。
在退出 NdisPoll 函数之前,驱动程序不应启用 Poll 对象的中断。 NDIS 将继续轮询驱动程序,直到它评估没有取得任何进展。 此时,NDIS 将停止轮询,并要求驱动程序通过调用 NdisSetPollNotification 回调来重新启用中断。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 11 |
最低受支持的服务器 | Windows Server 2022 |
标头 | poll.h (包括 ndis.h) |
IRQL | <= DISPATCH_LEVEL |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈