Condividi tramite


Impostazione delle informazioni NET_BUFFER_LIST

Un provider di suddivisione dei dati di intestazione deve impostare i flag di divisione header-data nel membro NblFlags delle strutture NET_BUFFER_LIST per ricevere indicazioni. Per i frame suddivisi, una scheda di interfaccia di rete deve anche fornire l'indirizzo fisico della parte dati del frame ricevuto nel membro DataPhysicalAddress di ogni struttura NET_BUFFER .

Nota Un driver miniport può impostare il membro DataPhysicalAddress della struttura NET_BUFFER, anche se il NET_BUFFER non è associato a un frame diviso. In questo caso , DataPhysicalAddress contiene l'indirizzo fisico dell'intestazione MDL.

Il provider di suddivisione dei dati di intestazione combina i flag nel membro NblFlags con un'operazione OR bit per bit.

Il provider di suddivisione dei dati di intestazione può impostare i flag seguenti anche se non divide un frame:

NDIS_NBL_FLAGS_IS_IPV4
Tutti i fotogrammi nella NET_BUFFER_LIST sono frame IPv4. Se questo flag è impostato, il flag NDIS_NBL_FLAGS_IS_IPV6 non deve essere impostato.

NDIS_NBL_FLAGS_IS_IPV6
Tutti i fotogrammi nella NET_BUFFER_LIST sono frame IPv6. Se questo flag è impostato, il flag NDIS_NBL_FLAGS_IS_IPV4 non deve essere impostato.

NDIS_NBL_FLAGS_IS_TCP
Tutti i fotogrammi nel NET_BUFFER_LIST sono frame TCP. Se questo flag è impostato, NDIS_NBL_FLAGS_IS_UDP non deve essere impostato. È necessario impostare NDIS_NBL_FLAGS_IS_IPV4 o NDIS_NBL_FLAGS_IS_IPV6.

NDIS_NBL_FLAGS_IS_UDP
Tutti i fotogrammi nel NET_BUFFER_LIST sono frame UDP. Se questo flag è impostato, NDIS_NBL_FLAGS_IS_TCP non deve essere impostato. È necessario impostare NDIS_NBL_FLAGS_IS_IPV4 o NDIS_NBL_FLAGS_IS_IPV6.

Qualsiasi driver NDIS può impostare i flag precedenti per il debug, il test o altri scopi. Se un driver imposta questi flag, i valori devono descrivere in modo accurato il contenuto del frame ricevuto. È consigliabile impostare questi flag.

Il provider di suddivisione dei dati di intestazione può impostare i flag di suddivisione dei dati di intestazione seguenti:

NDIS_NBL_FLAGS_HD_SPLIT
L'intestazione e i dati vengono suddivisi in tutti i frame Ethernet associati alla struttura NET_BUFFER_LIST .

NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER
Tutti i fotogrammi nella struttura NET_BUFFER_LIST vengono suddivisi all'inizio dell'intestazione del protocollo di livello superiore. Se questo flag è impostato, è necessario impostare NDIS_NBL_FLAGS_IS_IPV4 o NDIS_NBL_FLAGS_IS_IPV6. Inoltre, è possibile impostare NDIS_NBL_FLAGS_IS_TCP o NDIS_NBL_FLAGS_IS_UDP. E NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD non devono essere impostati.

NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD
Tutti i frame in una struttura NET_BUFFER_LIST vengono suddivisi all'inizio del payload TCP o all'inizio del payload UDP. Se questo flag è impostato, è necessario impostare NDIS_NBL_FLAGS_IS_IPV4 o NDIS_NBL_FLAGS_IS_IPV6. È necessario impostare NDIS_NBL_FLAGS_IS_TCP o NDIS_NBL_FLAGS_IS_UDP. Inoltre, NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER non deve essere impostato.

Se il provider di suddivisione dei dati di intestazione non divide un frame, il frame deve essere indicato con i flag seguenti cancellati in NblFlags :

  • NDIS_NBL_FLAGS_HD_SPLIT

  • NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER

  • NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD