NET_BUFFER_LIST 情報の設定

ヘッダー データ分割プロバイダーは、受信指示のために、NET_BUFFER_LIST 構造体の NblFlags メンバーにヘッダー データ分割フラグを設定する必要があります。 分割フレームの場合、NIC は、各 NET_BUFFER 構造体の DataPhysicalAddress メンバー内の受信フレームのデータ部分の物理アドレスも提供する必要があります。

: ミニポート ドライバーは、NET_BUFFERが 分割フレームに関連付けられていない場合でも、NET_BUFFER構造体の DataPhysicalAddress メンバーを設定できます。 この場合、 DataPhysicalAddress には、ヘッダー MDL の物理アドレスが含まれています。

ヘッダー データ分割プロバイダーは、NblFlags メンバーのフラグをビットごとの OR 演算と組み合わせます。

ヘッダー データ分割プロバイダーは、フレームを分割しない場合でも、次のフラグを設定できます。

NDIS_NBL_FLAGS_IS_IPV4
NET_BUFFER_LIST 内のすべてのフレームは IPv4 フレームです。 このフラグを設定する場合は、NDIS_NBL_FLAGS_IS_IPV6 フラグを設定しないでください。

NDIS_NBL_FLAGS_IS_IPV6
NET_BUFFER_LIST 内のすべてのフレームは IPv6 フレームです。 このフラグを設定する場合は、NDIS_NBL_FLAGS_IS_IPV4 フラグを設定しないでください。

NDIS_NBL_FLAGS_IS_TCP
NET_BUFFER_LIST 内のすべてのフレームは TCP フレームです。 このフラグを設定する場合は、NDIS_NBL_FLAGS_IS_UDP を設定しないでください。 また、NDIS_NBL_FLAGS_IS_IPV4 または NDIS_NBL_FLAGS_IS_IPV6 を設定する必要があります。

NDIS_NBL_FLAGS_IS_UDP
NET_BUFFER_LIST 内のすべてのフレームは UDP フレームです。 このフラグを設定する場合は、NDIS_NBL_FLAGS_IS_TCP を設定しないでください。 また、NDIS_NBL_FLAGS_IS_IPV4 または NDIS_NBL_FLAGS_IS_IPV6 を設定する必要があります。

NDIS ドライバーは、デバッグ、テスト、またはその他の目的で上記のフラグを設定できます。 ドライバーがこれらのフラグを設定する場合、値は、受信したフレームの内容を正確に記述する必要があります。 これらのフラグの設定をお勧めします。

ヘッダー データ分割プロバイダーは、次のヘッダー データ分割フラグを設定できます。

NDIS_NBL_FLAGS_HD_SPLIT
ヘッダーとデータは、NET_BUFFER_LIST 構造に関連付けられているすべてのイーサネット フレームで分割されます。

NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER
NET_BUFFER_LIST 構造体内のすべてのフレームは、上位レイヤー プロトコル ヘッダーの先頭で分割されます。 このフラグを設定する場合は、NDIS_NBL_FLAGS_IS_IPV4 または NDIS_NBL_FLAGS_IS_IPV6 を設定する必要があります。 また、NDIS_NBL_FLAGS_IS_TCP または NDIS_NBL_FLAGS_IS_UDP を設定できます。 また、NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD は設定しないでください。

NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD
NET_BUFFER_LIST 構造体内のすべてのフレームは、TCP ペイロードの先頭または UDP ペイロードの先頭に分割されます。 このフラグを設定する場合は、NDIS_NBL_FLAGS_IS_IPV4 または NDIS_NBL_FLAGS_IS_IPV6 を設定する必要があります。 NDIS_NBL_FLAGS_IS_TCP または NDIS_NBL_FLAGS_IS_UDP を設定する必要があります。 また、NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER は設定しないでください。

ヘッダー データ分割プロバイダーがフレームを分割しない場合は、NblFlags で次のフラグをクリアしてフレームを示す必要があります。

  • NDIS_NBL_FLAGS_HD_SPLIT

  • NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER

  • NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD