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_FRAGMENTRxBufferReturnContext 成员中提供自定义返回上下文结构,以及在此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

NET_ADAPTER_RX_CAPABILITIES_INIT_SYSTEM_MANAGED_DMA

NetAdapterSetDatapathCapabilities