структура 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 , указывающее, как операционная система должна выделять буферы приема.

AttachmentMode

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

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 , указывающее, как операционная система должна сопоставлять буферы приема данных.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.FragmentBufferAlignment

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

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.DmaCapabilities

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

Комментарии

Вызовите одну из функций 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
Верхняя часть netadapter.h (включая 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