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


структура NET_ADAPTER_RX_CAPABILITIES (netadapter.h)

Структура NET_ADAPTER_RX_CAPABILITIES описывает возможности получения сетевого адаптера.

Синтаксис

typedef struct _NET_ADAPTER_RX_CAPABILITIES {
  ULONG                                  Size;
  NET_RX_FRAGMENT_BUFFER_ALLOCATION_MODE AllocationMode;
  NET_RX_FRAGMENT_BUFFER_ATTACHMENT_MODE AttachmentMode;
  UINT32                                 FragmentRingNumberOfElementsHint;
  SIZE_T                                 MaximumFrameSize;
  SIZE_T                                 MaximumNumberOfQueues;
  union {
    struct {
      PFN_NET_ADAPTER_RETURN_RX_BUFFER EvtAdapterReturnRxBuffer;
    } DUMMYSTRUCTNAME;
    struct {
      NET_MEMORY_MAPPING_REQUIREMENT MappingRequirement;
      SIZE_T                         FragmentBufferAlignment;
      NET_ADAPTER_DMA_CAPABILITIES   *DmaCapabilities;
    } DUMMYSTRUCTNAME2;
  } DUMMYUNIONNAME;
} NET_ADAPTER_RX_CAPABILITIES;

Члены

Size

Размер этой структуры в байтах.

AllocationMode

Значение NET_RX_FRAGMENT_BUFFER_ALLOCATION_MODE, указывающее, как операционная система должна выделять буферы приема.

Драйверы UMDF должны задать это значение для NetRxFragmentBufferAllocationModeSystem.

AttachmentMode

Значение NET_RX_FRAGMENT_BUFFER_ATTACHMENT_MODE, указывающее, как операционная система должна предварительно подключить буферы получения.

Драйверы UMDF должны задать это значение для NetRxFragmentBufferAttachmentModeSystem.

FragmentRingNumberOfElementsHint

Указание, указывающее, сколько элементов адаптеру требуется для каждого кольцевого буфера очереди получения NET_FRAGMENT. Этот член должен быть мощностью 2.

MaximumFrameSize

Максимальный размер кадра в байтах, который может получить адаптер. Это значение должно содержать максимальный размер единицы передачи (MTU), поддерживаемый оборудованием для IP-пакета, а также дополнительное пространство, которое может потребоваться драйверу для метаданных пакетов. Дополнительные сведения см. в примере получения в разделе "Примечания" EVT_PACKET_QUEUE_ADVANCE.

MaximumNumberOfQueues

Максимальное количество очередей получения, поддерживаемых адаптером.

DUMMYUNIONNAME

Объединение, содержащее следующие члены:

DUMMYUNIONNAME.DUMMYSTRUCTNAME

Структуру, содержащую следующий элемент:

DUMMYUNIONNAME.DUMMYSTRUCTNAME.EvtAdapterReturnRxBuffer

Указатель на функцию обратного вызова драйвера EVT_NET_ADAPTER_RETURN_RX_BUFFER. Этот элемент требуется, если для элемента AllocationMode задано значение NetRxFragmentBufferAllocationModeDriver для вызова операционной системы после завершения работы системы с буфером получения.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2

Структуру, содержащую следующие элементы:

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.MappingRequirement

Значение NET_MEMORY_MAPPING_REQUIREMENT, указывающее, как операционная система должна сопоставлять буферы данных.

Драйверы UMDF должны задать MappingRequirement значение NetMemoryMappingRequirementNone.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.FragmentBufferAlignment

Минимальное выравнивание фрагментов пакетов. Этот член должен быть мощностью 2.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.DmaCapabilities

Указатель на выделенную драйвером и инициализированную NET_DMA_CAPABILITIES структуру, описывающую возможности DMA адаптера в пути получения. Этот элемент игнорируется NetAdapterCx, если MappingRequirement не задано значение NetMemoryMappingRequirementDmapped.

UMDF NetAdapterCX не поддерживает DmaCapabilities. Драйверы UMDF должны задать для этого члена значение NULL.

Замечания

Вызовите одну из функций NET_ADAPTER_RX_CAPABILITIES_INIT_XXX для инициализации этой структуры. Дополнительные сведения о каждой функции инициализации см. в разделе "См. также". Инициализированная структура NET_ADAPTER_RX_CAPABILITIES передается в качестве параметра для NetAdapterSetDatapathCapabilities.

Как правило, драйвер клиента выполняет как выделение, так и вложение, или указывает, что операционная система выполняет оба. В большинстве случаев рекомендуется выделить и подключить буферы получения операционной системы.

Если клиент указывает буферы, выделенные драйвером и присоединенными к ним, он должен предоставить настраиваемую структуру контекста возврата в RxBufferReturnContext член каждого NET_FRAGMENT во время выделения буфера, а также функцию обратного вызова EVT_NET_ADAPTER_RETURN_RX_BUFFER в этой структуре NET_ADAPTER_RX_CAPABILITIES для вызова операционной системы после завершения работы с буфером.

Требования

Требование Ценность
минимальная версия KMDF 1.25
минимальная версия UMDF 2.33
заголовка netadapter.h (include netadaptercx.h)

См. также

NET_ADAPTER_RX_CAPABILITIES_INIT_DRIVER_MANAGED

NET_ADAPTER_RX_CAPABILITIES_INIT_SYSTEM_MANAGED

NET_ADAPTER_RX_CAPABILITIES_INIT_SYSTEM_MANAGED_DMA

NetAdapterSetDatapathCapabilities