受信済みイーサネット フレームの表示
Windows TCP/IP プロトコル ドライバーでは、イーサネット フレームを受信するための一連の要件が課されます。 イーサネット フレームの受信表示を発信したり、基礎となるドライバーの受信表示を変更したりするドライバーは、TCP/IP が課す一般的な要件をサポートする必要があります。 これらのドライバーには、イーサネット ミニポート ドライバー、MUX 中間ドライバー、フィルター ドライバーが含まれます。
注: ドライバーがこれらの要件に従っていない場合は、上にあるドライバー (TCP/IP トランスポート、MUX 中間ドライバー、フィルター ドライバーなど) が予期せず動作する可能性があります。
イーサネットに由来するドライバーは、次の要件をサポートする必要があります。
ドライバーは、受信したイーサネット フレームの NET_BUFFER_LIST 構造体を割り当てる必要があります。 各 NET_BUFFER_LIST 構造体には、特定の使用に必要な NET_BUFFER_LIST の NetBufferListInfo メンバーで定義されている帯域外 (OOB) データを含める必要があります。
ドライバーは、フレームの NET_BUFFER 構造体を割り当て、NET_BUFFER_LIST 構造体にリンクする必要があります。 イーサネット ミニポートは、受信したデータを示すときに、NET_BUFFER_LIST 構造体に 1 つの NET_BUFFER 構造体を正確に割り当てる必要があります。 この制限は、イーサネット受信パスにのみ適用されます。 ネイティブの 802.11 ワイヤレス LAN インターフェイスなど、他のメディア タイプには適用されません。 または NDIS 全般。
NDIS 6.1 以降では、特定のシナリオでは、 受信 したイーサネット フレームの複数のメモリ記述子リスト (MDL) に NET_BUFFER 構造体を関連付けることができます。 NET_BUFFER_LIST 構造体には 1 つのNET_BUFFER 構造体を含める必要がありますが、複数の MDL を使用すると、ドライバーは受信したパケット データを個別のバッファーに分割できます。
たとえば、ヘッダー データ分割インターフェイスをサポートするイーサネット ドライバーは、1 つの NET_BUFFER 構造に関連付けられている複数の MDL のリンクされたリストを使用して、受信したイーサネット フレームを分割します。 詳しくは、「ヘッダー データの分割」をご覧ください。
わかりやすさとパフォーマンス上の理由から、ヘッダー データ分割をサポートしていないドライバーでは、NET_BUFFER 構造ごとに 1 つの MDL のみを使用することを強くお勧めします。
注 : Windows Vista の NDIS 6.0 では、各 NET_BUFFER 構造体には、1 つの MDL のみを含める必要があります。
ドライバーは、IP ヘッダー、IPv4 オプション、IPsec ヘッダー、IPv6 拡張ヘッダー、または上位層プロトコル ヘッダーの途中で受信したイーサネット フレームを分割してはいけません。ただし、最初の MDL に、先読みサイズに指定された NDIS 以上のバイト数が含まれている場合を除きます。
このような分割フレームが前のリスト項目で定義されている制限に準拠している場合、NDIS プロトコルとフィルター ドライバーは、受信表示で分割イーサネット フレームをサポートする必要があります。 この制限により、プロトコル ドライバーとフィルター ドライバーが将来の Windows バージョンと互換性があることを保証します。