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 |
ヘッダー | netadapter.h (netadaptercx.h を含む) |
関連項目
NET_ADAPTER_RX_CAPABILITIES_INIT_DRIVER_MANAGED
NET_ADAPTER_RX_CAPABILITIES_INIT_SYSTEM_MANAGED