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


структура NDIS_PD_QUEUE_PARAMETERS (ndis.h)

Эта структура используется для хранения параметров очереди передачи или получения при вызове любой подпрограммы очереди.

Синтаксис

typedef struct _NDIS_PD_QUEUE_PARAMETERS {
  NDIS_OBJECT_HEADER     Header;
  ULONG                  Flags;
  NDIS_PD_QUEUE_TYPE     QueueType;
  ULONG                  QueueSize;
  ULONG                  ReceiveDataLength;
  GROUP_AFFINITY         Affinity;
  ULONG                  TrafficClassId;
  ULONG                  MaximumPartialBufferCount;
  NDIS_PD_COUNTER_HANDLE CounterHandle;
} NDIS_PD_QUEUE_PARAMETERS;

Члены

Header

Структура NDIS_OBJECT_HEADER для структуры NDIS_PD_CONFIG . Задайте элементы этой структуры следующим образом:

  • Тип = NDIS_OBJECT_TYPE_DEFAULT
  • Revision = NDIS_PD_QUEUE_PARAMETERS_REVISION_1
  • Размер = NDIS_SIZEOF_PD_QUEUE_PARAMETERS_REVISION_1

Flags

Этот элемент зарезервирован и должен иметь значение 0 от поставщика.

QueueType

Тип очереди. Дополнительные сведения см. в разделе NDIS_PD_QUEUE_TYPE.

QueueSize

Максимальное количество PD_BUFFER структур, которые может содержать эта очередь, всегда равно числу формы (2^k)-1 (63, 127, 255, 511, 1023 и т. д.). Это поддается эффективной арифметике циклических индексов.

ReceiveDataLength

Минимальная длина PD_BUFFER данных.

Affinity

Сходство процессора — это указание поставщику для оптимизации производительности. Платформа будет в основном обрабатывать очередь на процессорах, указанных этой маской. Поставщик должен задать это значение для ядра процессора, производного от таблицы косвенного обращения, настроенной из OID_GEN_RECEIVE_SCALE_PARAMETERS

TrafficClassId

MaximumPartialBufferCount

Для очередей передачи это максимальное количество частичных структур PD_BUFFER , которые клиент может связать в цепочку для формирования одного пакета L2. Это значение должно быть равно значению MaximumTxPartialBufferCount в структуре NDIS_PD_CAPABILITIES .

Для очередей получения это максимальное число частичных структур PD_BUFFER , которые поставщик может связать в цепочку, чтобы сформировать один большой пакет L2 с RSC. Оно должно быть меньше или равно значению MaximumRxPartialBufferCount в структуре NDIS_PD_CAPABILITIES .

Примечание Клиент никогда не отправляет PD_BUFFER структуры с частичным флагом в очередь получения. Клиенту всегда требуется размещать PD_BUFFER структуры с размером не менее MTU, начиная с начальной позиции данных. Поставщик выполняет цепочки только в случае RSC. Некоторые поставщики могут не поддерживать цепочки RSC. Эти поставщики устанавливают значение 1 для члена MaximumRxPartialBufferCount в структуре NDIS_PD_CAPABILITIES .
 

CounterHandle

Это дескриптор счетчика очереди передачи для очередей передачи и счетчик очереди получения для очередей получения. Во время создания очереди клиент может дополнительно предоставить дескриптор счетчика. В этом случае и в зависимости от типа очереди поставщик должен обновлять значения счетчиков по мере выполнения действий в очереди. Клиент отвечает за закрытие дескриптора счетчика только после закрытия очереди.

Для очередей, которые непосредственно не создаются клиентом, например очереди получения RSS, полученные с помощью подпрограммы NdisPDOnRssReceiveQueues, поставщик всегда должен иметь связанный дескриптор счетчика с очередью. То есть для заданного набора очередей получения RSS поставщик должен иметь один выделенный счетчик очереди получения для каждой очереди получения.

Комментарии

Эта структура должна быть выровнена по 8-байтовой границе.

Требования

Требование Значение
Минимальная версия клиента Windows 10
Минимальная версия сервера Windows Server 2016
Верхняя часть ndis.h

См. также раздел

NDIS_PD_QUEUE_TYPE

NdisPDAllocateQueue