NDIS_UDP_SEGMENTATION_OFFLOAD struttura (ntddndis.h)

La struttura NDIS_UDP_SEGMENTATION_OFFLOAD fornisce informazioni sull'offload di segmentazione UDP (USO) nella struttura NDIS_OFFLOAD .

Sintassi

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;

Members

IPv4

Struttura all'interno di NDIS_UDP_SEGMENTATION_OFFLOAD che specifica le informazioni IPv4, contenente i membri seguenti:

IPv4.Encapsulation

Impostazioni di incapsulamento per IPv4. Per altre informazioni su questo membro, vedere la sezione Osservazioni seguenti.

IPv4.MaxOffLoadSize

Byte massimi di dati utente che il trasporto può passare al driver miniport in un singolo pacchetto. Il trasporto non passerà un pacchetto al driver miniport che contiene più byte di dati utente rispetto a MaxOffLoadSize specifica. Se tale pacchetto deve essere trasmesso, il trasporto stesso segmenta il pacchetto in pacchetti più piccoli.

IPv4.MinSegmentCount

Numero minimo di segmenti che devono essere divisibili da un pacchetto UDP di grandi dimensioni prima che il trasporto possa scaricarlo nell'hardware per la segmentazione. Il trasporto non scarica un pacchetto di grandi dimensioni al driver miniport per la segmentazione a meno che il driver miniport possa creare almeno il numero di segmenti specificati da MinSegmentCount dal pacchetto. Se un pacchetto UDP di grandi dimensioni non soddisfa il requisito minimo di segmento, il trasporto TCP/IP segmenta se stesso il pacchetto in pacchetti più piccoli.

IPv4.SubMssFinalSegmentSupported

Valore ULONG che specifica se tutti i segmenti che un driver miniport deriva da un pacchetto UDP di grandi dimensioni deve essere la stessa dimensione massima del segmento (MSS) o meno. Se il driver miniport non imposta la funzionalità SubMssFinalSegmentSupported , ogni pacchetto UDP di grandi dimensioni caricato dal trasporto deve avere Length % MSS == 0. Vale a dire, il pacchetto di grandi dimensioni è diviso in pacchetti N con ogni segmento di pacchetto contenente esattamente byte utente MSS . Se il driver miniport imposta la funzionalità SubMssFinalSegmentSupported , questa condizione di divisione della lunghezza dei pacchetti nel trasporto non si applica. In altre parole, il segmento finale può essere minore di MSS.

Il driver deve impostare il valore di SubMssFinalSegmentSupported su NDIS_OFFLOAD_SUPPORTED se il miniport è in grado di segmentare UDP invia dove la lunghezza totale del pacchetto di grandi dimensioni ha un resto diverso da zero quando diviso da MSS. Quando il supporto del driver miniport è indicato tramite questo flag, il driver del protocollo è autorizzato a emettere invii UDP di grandi dimensioni in cui la lunghezza del payload UDP del pacchetto segmentato finale è minore di MSS.

Per altre informazioni, vedere Udp Segmentation Offload (USO).For more information, see UDP Segmentation Offload (USO).For more information, see UDP Segmentation Offload (USO).

IPv4.Reserved

Riservato. I driver miniport non devono leggere o scrivere in questo campo.

IPv6

Struttura all'interno di NDIS_UDP_SEGMENTATION_OFFLOAD che specifica le informazioni IPv6, contenenti i membri seguenti:

IPv6.Encapsulation

Impostazioni di incapsulamento per IPv6. Per altre informazioni su questo membro, vedere la sezione Osservazioni seguenti.

IPv6.MaxOffLoadSize

Byte massimi di dati utente che il trasporto può passare al driver miniport in un singolo pacchetto. Il trasporto non passerà un pacchetto al driver miniport che contiene più byte di dati utente rispetto a MaxOffLoadSize specifica. Se tale pacchetto deve essere trasmesso, il trasporto stesso segmenta il pacchetto in pacchetti più piccoli.

IPv6.MinSegmentCount

Numero minimo di segmenti che devono essere divisibili da un pacchetto UDP di grandi dimensioni prima che il trasporto possa scaricarlo nell'hardware per la segmentazione. Il trasporto non scarica un pacchetto di grandi dimensioni al driver miniport per la segmentazione a meno che il driver miniport possa creare almeno il numero di segmenti specificati da MinSegmentCount dal pacchetto. Se un pacchetto UDP di grandi dimensioni non soddisfa il requisito minimo di segmento, il trasporto TCP/IP segmenta se stesso il pacchetto in pacchetti più piccoli.

IPv6.SubMssFinalSegmentSupported

Valore ULONG che specifica se tutti i segmenti che un driver miniport deriva da un pacchetto UDP di grandi dimensioni deve essere la stessa dimensione massima del segmento (MSS) o meno. Se il driver miniport non imposta la funzionalità SubMssFinalSegmentSupported , ogni pacchetto UDP di grandi dimensioni caricato dal trasporto deve avere Length % MSS == 0. Vale a dire, il pacchetto di grandi dimensioni è diviso in pacchetti N con ogni segmento di pacchetto contenente esattamente byte utente MSS . Se il driver miniport imposta la funzionalità SubMssFinalSegmentSupported , questa condizione di divisione della lunghezza dei pacchetti nel trasporto non si applica. In altre parole, il segmento finale può essere minore di MSS.

Il driver deve impostare il valore di SubMssFinalSegmentSupported su NDIS_OFFLOAD_SUPPORTED se il miniport è in grado di segmentare UDP invia dove la lunghezza totale del pacchetto di grandi dimensioni ha un resto diverso da zero quando diviso da MSS. Quando il supporto del driver miniport è indicato tramite questo flag, il driver del protocollo è autorizzato a emettere invii UDP di grandi dimensioni in cui la lunghezza del payload UDP del pacchetto segmentato finale è minore di MSS.

Per altre informazioni, vedere Udp Segmentation Offload (USO).For more information, see UDP Segmentation Offload (USO).For more information, see UDP Segmentation Offload (USO).

IPv6.Reserved1

Riservato. I driver miniport non devono leggere o scrivere in questo campo.

IPv6.IpExtensionHeadersSupported

Valore ULONG impostato da un driver miniport per indicare che l'adattatore miniport può segmentare un pacchetto UDP di grandi dimensioni che contiene intestazioni di estensione IPv6.

IPv6.Reserved2

Riservato. I driver miniport non devono leggere o scrivere in questo campo.

Commenti

I driver Miniport devono impostare i valori dei campi di questa struttura e i requisiti di incapsulamento in modo analogo alla struttura NDIS_TCP_LARGE_SEND_OFFLOAD_V2 .

La struttura NDIS_UDP_SEGMENTATION_OFFLOAD viene usata nel membro UdpSegmentation della struttura NDIS_OFFLOAD . NDIS_UDP_SEGMENTATION_OFFLOAD specifica i servizi correnti o supportati forniti da una scheda miniport per segmentare pacchetti UDP di grandi dimensioni in pacchetti più piccoli.

NDIS_OFFLOAD viene usato nella struttura NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES, nella struttura NDIS_BIND_PARAMETERS, nella struttura NDIS_FILTER_ATTACH_PARAMETERS, nell'OID OID_TCP_OFFLOAD_CURRENT_CONFIGe nell'indicazione dello stato NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG.

Per OID_TCP_OFFLOAD_CURRENT_CONFIG, la struttura NDIS_OFFLOAD specifica le funzionalità di offload attività supportate da una scheda miniport. Se le funzionalità di offload correnti cambiano, un driver miniport segnala le nuove funzionalità in un'indicazione di stato NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG.

I membri di encapsulation di NDIS_UDP_SEGMENTATION_OFFLOAD definiscono le impostazioni di incapsulamento UDP per l'adattatore miniport.

In risposta a una richiesta di query OID_TCP_OFFLOAD_CURRENT_CONFIG , NDIS fornisce un or bit per bit dei flag di incapsulamento, che indicano le impostazioni di incapsulamento supportate, in ognuno dei membri di incapsulazione . I driver Miniport devono fornire incapsulamento Ethernet (NDIS_ENCAPSULATION_IEEE_802_3). Gli altri tipi di incapsulamento sono facoltativi.

Per un'indicazione di stato NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG, il driver miniport fornisce un or bit per bit dei flag di incapsulamento, che indicano le funzionalità correnti, in ognuno dei membri dell'incapsulamento .

I flag seguenti sono definiti per i membri di Encapsulation :

NDIS_ENCAPSULATION_NOT_SUPPORTED
Specifica che non è supportato alcun offload di incapsulamento.

NDIS_ENCAPSULATION_NULL
Specifica l'incapsulamento NULL.

NDIS_ENCAPSULATION_IEEE_802_3
Specifica l'incapsulamento IEEE 802.3.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q
Specifica l'incapsulamento IEEE 802.3p e IEEE 802.3q.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB
Specifica che le impostazioni di incapsulazione IEEE 802.3p e IEEE 802.3q vengono specificate nel membro NetBufferListInfo di ogni struttura NET_BUFFER_LIST.

NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED
Specifica l'incapsulamento logico (LLC) per i protocolli indirizzati, come descritto in RFC 1483. Questo flag viene usato anche per indicare l'incapsulamento Ethernet LLC/SNAP.

Requisiti

   
Client minimo supportato Windows 10, versione 1912
Intestazione ntddndis.h

Vedi anche

Offload di segmentazione UDP (USO)