次の方法で共有


NDIS_UDP_SEGMENTATION_OFFLOAD構造体 (ntddndis.h)

NDIS_UDP_SEGMENTATION_OFFLOAD 構造体は、NDIS_OFFLOAD 構造体の UDP セグメント化オフロード (USO) 情報を提供します。

構文

typedef struct _NDIS_UDP_SEGMENTATION_OFFLOAD {
  struct {
    ULONG Encapsulation;
    ULONG MaxOffLoadSize;
    ULONG MinSegmentCount : 6;
    ULONG SubMssFinalSegmentSupported : 1;
#if ...
    ULONG Reserved : 25;
#else
    ULONG Reserved : 26;
#endif
  } IPv4;
  struct {
    ULONG Encapsulation;
    ULONG MaxOffLoadSize;
    ULONG MinSegmentCount : 6;
    ULONG SubMssFinalSegmentSupported : 1;
#if ...
    ULONG Reserved1 : 25;
#else
    ULONG Reserved1 : 26;
#endif
    ULONG IpExtensionHeadersSupported : 2;
    ULONG Reserved2 : 30;
  } IPv6;
} NDIS_UDP_SEGMENTATION_OFFLOAD, *PNDIS_UDP_SEGMENTATION_OFFLOAD;

メンバーズ

IPv4

次のメンバーを含む IPv4 情報を指定する NDIS_UDP_SEGMENTATION_OFFLOAD 内の構造体。

IPv4.Encapsulation

IPv4 のカプセル化設定。 このメンバーの詳細については、次の「解説」セクションを参照してください。

IPv4.MaxOffLoadSize

トランスポートがミニポート ドライバーに 1 つのパケットで渡すことができるユーザー データの最大バイト数。 トランスポートは、MaxOffLoadSize が指定 よりも多くのユーザー データ バイトを含むミニポート ドライバーにパケットを渡しません。 そのようなパケットを送信する必要がある場合、トランスポート自体はパケットをより小さいパケットにセグメント化します。

IPv4.MinSegmentCount

トランスポートがセグメント化のためにハードウェアにオフロードする前に、大きな UDP パケットが割り切れる必要があるセグメントの最小数。 ミニポート ドライバーが少なくとも MinSegmentCount パケットから指定されている数のセグメントを作成できる場合を除き、トランスポートはセグメント化のためにミニポート ドライバーに大きなパケットをオフロードしません。 大きな UDP パケットが最小セグメント要件を満たしていない場合、TCP/IP トランスポート自体はパケットをより小さなパケットにセグメント化します。

IPv4.SubMssFinalSegmentSupported

ミニポート ドライバーが大きな UDP パケットから派生するすべてのセグメントが同じ最大セグメント サイズ (MSS) である必要があるかどうかを指定する ULONG 値。 ミニポート ドライバーが、SubMssFinalSegmentSupported 機能を設定しない場合、トランスポートによってオフロードされる各大きな UDP パケットは、MSS == 0 %長さである必要があります。 つまり、大きなパケットは、N パケットに割り切り、各パケット セグメントには MSS ユーザー バイト 正確に含まれます。 ミニポート ドライバーは、SubMssFinalSegmentSupported 機能を設定する場合、トランスポートにこのパケット長の割り切り性条件は適用されません。 つまり、最終的なセグメントは MSS 未満にすることができます。

ドライバーは、ミニポートが UDP 送信をセグメント化できる場合、SubMssFinalSegmentSupported の値を NDIS_OFFLOAD_SUPPORTED に設定する必要があります。大きなパケットの合計の長さが MSS で除算された場合、0 以外の剰余。 ミニポート ドライバーのサポートがこのフラグを使用して示されている場合、プロトコル ドライバーは、最終的なセグメント化されたパケットの UDP ペイロードの長さが MSS 未満である大きな UDP 送信を発行することが許可されます。

詳細については、「UDP セグメント化オフロード (USO)を参照してください。

IPv4.Reserved

引っ込み思案。 ミニポート ドライバーは、このフィールドの読み取りまたは書き込みを行う必要があります。

IPv6

次のメンバーを含む IPv6 情報を指定する NDIS_UDP_SEGMENTATION_OFFLOAD 内の構造体。

IPv6.Encapsulation

IPv6 のカプセル化設定。 このメンバーの詳細については、次の「解説」セクションを参照してください。

IPv6.MaxOffLoadSize

トランスポートがミニポート ドライバーに 1 つのパケットで渡すことができるユーザー データの最大バイト数。 トランスポートは、MaxOffLoadSize が指定 よりも多くのユーザー データ バイトを含むミニポート ドライバーにパケットを渡しません。 そのようなパケットを送信する必要がある場合、トランスポート自体はパケットをより小さいパケットにセグメント化します。

IPv6.MinSegmentCount

トランスポートがセグメント化のためにハードウェアにオフロードする前に、大きな UDP パケットが割り切れる必要があるセグメントの最小数。 ミニポート ドライバーが少なくとも MinSegmentCount パケットから指定されている数のセグメントを作成できる場合を除き、トランスポートはセグメント化のためにミニポート ドライバーに大きなパケットをオフロードしません。 大きな UDP パケットが最小セグメント要件を満たしていない場合、TCP/IP トランスポート自体はパケットをより小さなパケットにセグメント化します。

IPv6.SubMssFinalSegmentSupported

ミニポート ドライバーが大きな UDP パケットから派生するすべてのセグメントが同じ最大セグメント サイズ (MSS) である必要があるかどうかを指定する ULONG 値。 ミニポート ドライバーが、SubMssFinalSegmentSupported 機能を設定しない場合、トランスポートによってオフロードされる各大きな UDP パケットは、MSS == 0 %長さである必要があります。 つまり、大きなパケットは、N パケットに割り切り、各パケット セグメントには MSS ユーザー バイト 正確に含まれます。 ミニポート ドライバーは、SubMssFinalSegmentSupported 機能を設定する場合、トランスポートにこのパケット長の割り切り性条件は適用されません。 つまり、最終的なセグメントは MSS 未満にすることができます。

ドライバーは、ミニポートが UDP 送信をセグメント化できる場合、SubMssFinalSegmentSupported の値を NDIS_OFFLOAD_SUPPORTED に設定する必要があります。大きなパケットの合計の長さが MSS で除算された場合、0 以外の剰余。 ミニポート ドライバーのサポートがこのフラグを使用して示されている場合、プロトコル ドライバーは、最終的なセグメント化されたパケットの UDP ペイロードの長さが MSS 未満である大きな UDP 送信を発行することが許可されます。

詳細については、「UDP セグメント化オフロード (USO)を参照してください。

IPv6.Reserved1

引っ込み思案。 ミニポート ドライバーは、このフィールドの読み取りまたは書き込みを行う必要があります。

IPv6.IpExtensionHeadersSupported

ミニポート ドライバーが IPv6 拡張ヘッダーを含む IP ヘッダーを持つ大きな UDP パケットをセグメント化できることを示すためにミニポート ドライバーが設定する ULONG 値。

IPv6.Reserved2

引っ込み思案。 ミニポート ドライバーは、このフィールドの読み取りまたは書き込みを行う必要があります。

備考

ミニポート ドライバーは、NDIS_TCP_LARGE_SEND_OFFLOAD_V2 構造体と同様に、この構造体のフィールドとカプセル化の要件の値を設定する必要があります。

NDIS_UDP_SEGMENTATION_OFFLOAD 構造体は、NDIS_OFFLOAD 構造体の UdpSegmentation メンバーで使用されます。 NDIS_UDP_SEGMENTATION_OFFLOAD は、ミニポート アダプターが小さいパケットに大きな UDP パケットをセグメント化するために提供する現在またはサポートされているサービスを指定します。

NDIS_OFFLOAD は、NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES 構造体、NDIS_BIND_PARAMETERS 構造体、NDIS_FILTER_ATTACH_PARAMETERS 構造体、OID_TCP_OFFLOAD_CURRENT_CONFIG OID、および NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG 状態表示で使用されます。

OID_TCP_OFFLOAD_CURRENT_CONFIGの場合、NDIS_OFFLOAD 構造体は、ミニポート アダプターがサポートするタスク オフロード機能を指定します。 現在のオフロード機能が変更された場合、ミニポート ドライバーは、NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG 状態を示す新しい機能を報告します。

カプセル化NDIS_UDP_SEGMENTATION_OFFLOAD のメンバーは、ミニポート アダプターの UDP カプセル化設定を定義します。

OID_TCP_OFFLOAD_CURRENT_CONFIG クエリ要求に応答して、NDIS は、サポートされているカプセル化設定を示すカプセル化フラグのビットごとの OR を、各 カプセル化 メンバーに提供します。 ミニポート ドライバーは、イーサネット カプセル化 (NDIS_ENCAPSULATION_IEEE_802_3) を提供する必要があります。 その他の種類のカプセル化は省略可能です。

NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG 状態を示すミニポート ドライバーは、カプセル化フラグのビットごとの OR を提供します。これは、現在の機能を示します。これは、各 カプセル化 メンバーに含まれます。

カプセル化 メンバーには、次のフラグが定義されています。

NDIS_ENCAPSULATION_NOT_SUPPORTED
カプセル化オフロードがサポートされていないことを指定します。

NDIS_ENCAPSULATION_NULL
NULL カプセル化を指定します。

NDIS_ENCAPSULATION_IEEE_802_3
IEEE 802.3 カプセル化を指定します。

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q
IEEE 802.3p および IEEE 802.3q カプセル化を指定します。

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB
各NET_BUFFER_LIST構造体の NetBufferListInfo メンバーで IEEE 802.3p および IEEE 802.3q カプセル化設定を指定します。

NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED
RFC 1483 で説明されているように、ルーティング プロトコルの論理リンク制御 (LLC) カプセル化を指定します。 このフラグは、イーサネット LLC/SNAP カプセル化を示すためにも使用されます。

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 1912
ヘッダー ntddndis.h

関連項目

UDP セグメント化オフロード (USO)