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


структура 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
  • редакции = 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