структура 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