Поделиться через


функция обратного вызова NDIS_PD_FLUSH_QUEUE (ndis.h)

Платформа PacketDirect (PD) вызывает функцию PDFlushQueue драйвера мини-порта с поддержкой PD для очистки указанной очереди, гарантируя, что все элементы, которые еще не находятся в полном состоянии в очереди, будут немедленно завершены.

Примечание Функцию необходимо объявить с помощью типа NDIS_PD_FLUSH_QUEUE . Дополнительные сведения см. в следующем разделе Примеры.

 

Синтаксис

NDIS_PD_FLUSH_QUEUE NdisPdFlushQueue;

VOID() NdisPdFlushQueue(
  [in, out] NDIS_PD_QUEUE *Queue
)
{...}

Параметры

[in, out] Queue

Очередь для очистки. Дополнительные сведения см. в разделе структура NDIS_PD_QUEUE .

Возвращаемое значение

Эта функция обратного вызова не возвращает значение.

Комментарии

Вызывающий объект отвечает за ожидание и очистку всех ранее опубликованных запросов перед закрытием очереди. Вызывающий объект не должен отправлять дополнительные PD_BUFFER структуры в очередь после этого вызова. Основным вариантом использования этой подпрограммы является очистка очередей получения. Если входящий трафик отсутствует, размещенные буферы будут находиться в очереди получения неограниченное время, и их необходимо очистить путем очистки, прежде чем очередь может быть закрыта. На практике эта проблема не существует для очередей передачи, так как запросы на передачу не будут выполняться бесконечно. Однако поставщики должны учитывать вызов очистки для очередей передачи (это может быть без операции, если поставщик знает, что ожидающий запрос на передачу будет завершен очень скоро, что является типичным случаем, за исключением управления потоком L2).

Примеры

Чтобы определить функцию PDFlushQueue , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию PDFlushQueue с именем MyPDFlushQueue, используйте тип NDIS_PD_FLUSH_QUEUE , как показано в следующем примере кода:

NDIS_PD_FLUSH_QUEUE MyPDFlushQueue;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
VOID
 MyPDFlushQueue(
    NDIS_PD_QUEUE*  NdisPDQueue
    )
  {...}

Тип функции NDIS_PD_FLUSH_QUEUE определен в файле заголовка Ntddndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции NDIS_PD_FLUSH_QUEUE в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.

Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.

Требования

Требование Значение
Минимальная версия клиента Windows 10
Минимальная версия сервера Windows Server 2016
Целевая платформа Windows
Header ndis.h
IRQL <= DISPATCH_LEVEL