structure NDIS_UDP_SEGMENTATION_OFFLOAD (ntddndis.h)
La structure NDIS_UDP_SEGMENTATION_OFFLOAD fournit des informations sur le déchargement de segmentation UDP (USO) dans la structure NDIS_OFFLOAD.
Syntaxe
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;
Membres
IPv4
Structure dans NDIS_UDP_SEGMENTATION_OFFLOAD qui spécifie les informations IPv4, contenant les membres suivants :
IPv4.Encapsulation
Paramètres d’encapsulation pour IPv4. Pour plus d’informations sur ce membre, consultez la section Remarques suivante.
IPv4.MaxOffLoadSize
Octets maximum de données utilisateur que le transport peut passer au pilote miniport dans un seul paquet. Le transport ne transmet pas de paquet au pilote miniport qui contient plus d’octets de données utilisateur que MaxOffLoadSize spécifie. Si un tel paquet doit être transmis, le transport lui-même segmente le paquet en paquets plus petits.
IPv4.MinSegmentCount
Nombre minimal de segments qu’un paquet UDP volumineux doit être divisible avant que le transport puisse le décharger sur le matériel pour la segmentation. Le transport ne déchargera pas un paquet volumineux vers le pilote miniport pour la segmentation, sauf si le pilote miniport peut créer au moins autant de segments que MinSegmentCount spécifie à partir du paquet. Si un paquet UDP volumineux ne répond pas à la condition minimale du segment, le transport TCP/IP lui-même segmente le paquet en paquets plus petits.
IPv4.SubMssFinalSegmentSupported
Valeur ULONG qui spécifie si tous les segments qu’un pilote miniport dérive d’un paquet UDP volumineux doivent être la même taille de segment maximale (MSS) ou non. Si le pilote miniport ne définit pas la fonctionnalité SubMssFinalSegmentSupported, chaque paquet UDP volumineux déchargé par le transport doit avoir Length % MSS == 0. Autrement dit, le paquet volumineux est divisible en paquets N avec chaque segment de paquets contenant exactement MSS octets utilisateur. Si le pilote miniport définit la fonctionnalité SubMssFinalSegmentSupported, cette condition de divisibilité de longueur de paquet sur le transport ne s’applique pas. En d’autres termes, le segment final peut être inférieur à MSS.
Le pilote doit définir la valeur de SubMssFinalSegmentSupported sur NDIS_OFFLOAD_SUPPORTED si le miniport est capable de segmenter UDP envoie où la longueur totale du paquet volumineux a un reste non nul lorsqu’il est divisé par MSS. Lorsque la prise en charge du pilote miniport est indiquée via cet indicateur, le pilote de protocole est autorisé à émettre des envois UDP volumineux où la longueur de charge utile UDP du paquet segmenté final est inférieure à MSS.
Pour plus d’informations, consultez udp Segmentation Offload (USO).
IPv4.Reserved
Réservé. Les pilotes miniports ne doivent pas lire ou écrire dans ce champ.
IPv6
Structure dans NDIS_UDP_SEGMENTATION_OFFLOAD qui spécifie les informations IPv6, contenant les membres suivants :
IPv6.Encapsulation
Paramètres d’encapsulation pour IPv6. Pour plus d’informations sur ce membre, consultez la section Remarques suivante.
IPv6.MaxOffLoadSize
Octets maximum de données utilisateur que le transport peut passer au pilote miniport dans un seul paquet. Le transport ne transmet pas de paquet au pilote miniport qui contient plus d’octets de données utilisateur que MaxOffLoadSize spécifie. Si un tel paquet doit être transmis, le transport lui-même segmente le paquet en paquets plus petits.
IPv6.MinSegmentCount
Nombre minimal de segments qu’un paquet UDP volumineux doit être divisible avant que le transport puisse le décharger sur le matériel pour la segmentation. Le transport ne déchargera pas un paquet volumineux vers le pilote miniport pour la segmentation, sauf si le pilote miniport peut créer au moins autant de segments que MinSegmentCount spécifie à partir du paquet. Si un paquet UDP volumineux ne répond pas à la condition minimale du segment, le transport TCP/IP lui-même segmente le paquet en paquets plus petits.
IPv6.SubMssFinalSegmentSupported
Valeur ULONG qui spécifie si tous les segments qu’un pilote miniport dérive d’un paquet UDP volumineux doivent être la même taille de segment maximale (MSS) ou non. Si le pilote miniport ne définit pas la fonctionnalité SubMssFinalSegmentSupported, chaque paquet UDP volumineux déchargé par le transport doit avoir Length % MSS == 0. Autrement dit, le paquet volumineux est divisible en paquets N avec chaque segment de paquets contenant exactement MSS octets utilisateur. Si le pilote miniport définit la fonctionnalité SubMssFinalSegmentSupported, cette condition de divisibilité de longueur de paquet sur le transport ne s’applique pas. En d’autres termes, le segment final peut être inférieur à MSS.
Le pilote doit définir la valeur de SubMssFinalSegmentSupported sur NDIS_OFFLOAD_SUPPORTED si le miniport est capable de segmenter UDP envoie où la longueur totale du paquet volumineux a un reste non nul lorsqu’il est divisé par MSS. Lorsque la prise en charge du pilote miniport est indiquée via cet indicateur, le pilote de protocole est autorisé à émettre des envois UDP volumineux où la longueur de charge utile UDP du paquet segmenté final est inférieure à MSS.
Pour plus d’informations, consultez udp Segmentation Offload (USO).
IPv6.Reserved1
Réservé. Les pilotes miniports ne doivent pas lire ou écrire dans ce champ.
IPv6.IpExtensionHeadersSupported
Valeur ULONG définie par un pilote miniport pour indiquer que l’adaptateur miniport peut segmenter un paquet UDP volumineux dont l’en-tête IP contient des en-têtes d’extension IPv6.
IPv6.Reserved2
Réservé. Les pilotes miniports ne doivent pas lire ou écrire dans ce champ.
Remarques
Les pilotes miniport doivent définir les valeurs des champs de cette structure et les exigences d’encapsulation de la même façon que la structure NDIS_TCP_LARGE_SEND_OFFLOAD_V2.
La structure NDIS_UDP_SEGMENTATION_OFFLOAD est utilisée dans le membre udpSegmentation de la structure NDIS_OFFLOAD. NDIS_UDP_SEGMENTATION_OFFLOAD spécifie les services actuels ou pris en charge qu’un adaptateur miniport fournit pour segmenter des paquets UDP volumineux en paquets plus petits.
NDIS_OFFLOAD est utilisé dans la structure NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES, la structure NDIS_BIND_PARAMETERS, la structure NDIS_FILTER_ATTACH_PARAMETERS, la OID_TCP_OFFLOAD_CURRENT_CONFIG OID et l’indication d’état NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG.
Pour OID_TCP_OFFLOAD_CURRENT_CONFIG, la structure NDIS_OFFLOAD spécifie les fonctionnalités de déchargement des tâches prises en charge par un adaptateur miniport. Si les fonctionnalités de déchargement actuelles changent, un pilote miniport signale les nouvelles fonctionnalités dans une indication d’état NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG.
L’encapsulation membres de NDIS_UDP_SEGMENTATION_OFFLOAD définir les paramètres d’encapsulation UDP pour l’adaptateur miniport.
En réponse à une demande de requête OID_TCP_OFFLOAD_CURRENT_CONFIG, NDIS fournit une or au niveau du bit des indicateurs d’encapsulation, qui indiquent les paramètres d’encapsulation pris en charge, dans chacune des encapsulation membres. Les pilotes miniport doivent fournir l’encapsulation Ethernet (NDIS_ENCAPSULATION_IEEE_802_3). Les autres types d’encapsulation sont facultatifs.
Pour une indication d’état NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG, le pilote miniport fournit une or au niveau du bit des indicateurs d’encapsulation, qui indiquent les fonctionnalités actuelles, dans chacune des encapsulation membres.
Les indicateurs suivants sont définis pour les membres encapsulation :
NDIS_ENCAPSULATION_NOT_SUPPORTED
Spécifie qu’aucun déchargement d’encapsulation n’est pris en charge.
NDIS_ENCAPSULATION_NULL
Spécifie l’encapsulation NULL.
NDIS_ENCAPSULATION_IEEE_802_3
Spécifie l’encapsulation IEEE 802.3.
NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q
Spécifie l’encapsulation IEEE 802.3p et IEEE 802.3q.
NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB
Spécifie que les paramètres d’encapsulation IEEE 802.3p et IEEE 802.3q sont spécifiés dans le membre NetBufferListInfo de chaque structure NET_BUFFER_LIST.
NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED
Spécifie l’encapsulation du contrôle de liaison logique (LLC) pour les protocoles routés, comme décrit dans RFC 1483. Cet indicateur est également utilisé pour indiquer l’encapsulation Ethernet LLC/SNAP.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10, version 1912 |
d’en-tête | ntddndis.h |