次の方法で共有


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 構造体へのポインター。 MappingRequirementNetMemoryMappingRequirementDmaMapped に設定されていない場合、このメンバーは 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
Header 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