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


структура 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 не задано значение NetMemoryMappingRequirementDmaMapped.

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 (включая 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