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 结构的指针。 它还包含有关需要指示的 NBL 数量的详细信息。
言论
微型端口驱动程序在微型端口适配器初始化期间注册 NdisPoll 回调。 驱动程序在调用 NdisRegisterPoll之前,在 NDIS_POLL_CHARACTERISTICS 结构的 PollHandler 参数中为 NdisPoll 函数指定入口点。
驱动程序调用 NdisRequestPoll时,NDIS 将首先调用
可以在 PASSIVE_LEVEL 和 DISPATCH_LEVEL IRQL 上调用 NdisPoll 回调。 驱动程序不应假设它将达到哪个级别。
驱动程序必须检查 接收 或 传输 NDIS_POLL_DATA 结构的 参数,以获取它可以指示或完成的最大 NBL 数。
对于接收指示,驱动程序应:
- 提取最多可以指示的 Rx 数据包数。
- 初始化 NBL。
- 将它们添加到 NDIS_POLL_RECEIVE_DATA 结构提供的 NBL 队列(位于 NdisPollPollData 参数 NDIS_POLL_DATA 结构中)。
- 退出回调。
对于传输完成,驱动程序应:
- 获取最多可以完成的 Tx 数据包数。
- 完成 NBL。
- 将它们添加到 NDIS_POLL_TRANSMIT_DATA 结构提供的 NBL 队列(位于 NdisPollPollData 参数的 NDIS_POLL_DATA 结构中)。
- 退出回调。
在退出 NdisPoll 函数之前,驱动程序不应启用 Poll 对象的中断。 NDIS 将继续轮询驱动程序,直到评估是否没有取得进展。 此时,NDIS 将停止轮询,并要求驱动程序通过调用 NdisSetPollNotification 回调来重新启用中断。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 11 |
支持的最低服务器 | Windows Server 2022 |
标头 | poll.h (include ndis.h) |
IRQL | <= DISPATCH_LEVEL |