netadapter.h) (NET_ADAPTER_RX_CAPABILITIES 结构
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
适配器可以接收的最大帧大小(以字节为单位)。 此值应包括硬件支持的 IP 数据包的最大传输单元 (MTU) 大小,以及驱动程序可能需要用于数据包元数据的额外空间。 有关详细信息,请参阅 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 功能。 如果 MappingRequirement 未设置为 NetMemoryMappingRequirementDmaMapped,NetAdapterCx 将忽略此成员。
UMDF NetAdapterCX 不支持 DmaCapabilities。 UMDF 驱动程序必须将此成员设置为 NULL。
注解
调用 NET_ADAPTER_RX_CAPABILITIES_INIT_XXX 函数之一来初始化此结构。 有关每个初始化函数的详细信息,请参阅“另请参阅”部分中的链接。 初始化 的 NET_ADAPTER_RX_CAPABILITIES 结构作为参数传递给 NetAdapterSetDatapathCapabilities。
通常,客户端驱动程序本身同时执行分配和附加,或者指定操作系统同时执行这两者。 在大多数情况下,我们建议操作系统分配并附加接收缓冲区。
如果客户端指定了驱动程序分配的接收缓冲区和附加的接收缓冲区,则它必须在缓冲区分配期间在每个NET_FRAGMENT的 RxBufferReturnContext 成员中提供自定义返回上下文结构,以及在此NET_ADAPTER_RX_CAPABILITIES结构中提供EVT_NET_ADAPTER_RETURN_RX_BUFFER回调函数,以便在使用缓冲区完成后调用操作系统。
要求
要求 | 值 |
---|---|
最低 KMDF 版本 | 1.25 |
最低 UMDF 版本 | 2.33 |
标头 | netadapter.h (包括 netadaptercx.h) |
另请参阅
NET_ADAPTER_RX_CAPABILITIES_INIT_DRIVER_MANAGED
NET_ADAPTER_RX_CAPABILITIES_INIT_SYSTEM_MANAGED