функция обратного вызова 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 во время инициализации адаптера минипорта. Драйверы указывают точку входа для функции NdisPoll в параметре PollHandlerструктуры NDIS_POLL_CHARACTERISTICS перед вызовом NdisRegisterPoll.
NDIS сначала вызывает обратный вызов NdisPoll , когда драйвер вызывает NdisRequestPoll. NDIS будет продолжать вызывать NdisPoll , пока драйвер выполняет прогресс в получении признаков или завершения передачи.
Обратный вызов NdisPoll можно вызывать как в PASSIVE_LEVEL, так и в DISPATCH_LEVEL IRQL. Драйвер не должен делать предположений о том, какой уровень он будет.
Драйвер должен проверка параметры приема или передачиструктуры NDIS_POLL_DATA, чтобы получить максимальное количество NBL, которые он может указывать или завершить.
Для получения показаний драйвер должен:
- Получите максимальное количество пакетов Rx, которое может быть указано.
- Инициализируйте NCL.
- Добавьте их в очередь NBL, предоставляемую структурой NDIS_POLL_RECEIVE_DATA (расположенной в структуре NDIS_POLL_DATA параметра NdisPollPollData ).
- Выйдите из обратного вызова.
Для завершения передачи драйвер должен:
- Получите максимальное количество пакетов Tx, которые он может завершить.
- Заполните списки NBL.
- Добавьте их в очередь NBL, предоставляемую структурой NDIS_POLL_TRANSMIT_DATA (расположенной в структуре NDIS_POLL_DATA параметра NdisPollPollData ).
- Выйдите из обратного вызова.
Драйвер не должен включать прерывание объекта Poll перед выходом из функции NdisPoll . NDIS будет продолжать опрашивает водителя, пока он не оценит, что никакого прогресса в настоящее время не делается. На этом этапе NDIS прекратит опрос и попросит драйвер повторно включить прерывание, вызвав обратный вызов NdisSetPollNotification .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 11 |
Минимальная версия сервера | Windows Server 2022 |
Верхняя часть | poll.h (включая ndis.h) |
IRQL | <= DISPATCH_LEVEL |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по