次の方法で共有


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

アダプターが受信できる最大フレーム サイズ (バイト単位)。 この値には、ハードウェアが 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 ドライバーは、MappingRequirementNetMemoryMappingRequirementNoneに設定する必要があります。

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.FragmentBufferAlignment

パケット フラグメントの最小アライメント。 このメンバーは 2 の累乗である必要があります。

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.DmaCapabilities

受信パス上のアダプターの DMA 機能を記述するドライバーによって割り当てられ、初期化された NET_DMA_CAPABILITIES 構造体へのポインター。 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