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 ドライバーでは 、MappingRequirement を NetMemoryMappingRequirementNone に設定する必要があります。
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_FRAGMENTの RxBufferReturnContext メンバーにカスタムの戻りコンテキスト構造と、バッファーの使用が完了したらオペレーティング システムが呼び出すこの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