NET_ADAPTER_RX_CAPABILITIES结构 (netadapter.h)
NET_ADAPTER_RX_CAPABILITIES 结构描述 net adapter 的接收功能。
语法
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