Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La creazione di pacchetti di dati è stata riprogettata in NDIS 6.0. L'architettura di invio e ricezione basata sulla struttura NDIS_PACKET è stata sostituita con un'architettura basata su strutture NET_BUFFER e NET_BUFFER_LIST. Una struttura NET_BUFFER è l'equivalente funzionale di una struttura NDIS_PACKET. Una struttura NET_BUFFER specifica un buffer (catena MDL) per i dati di rete, nonché lo spazio riservato per NDIS, driver di protocollo e driver miniport. Le strutture NET_BUFFER possono essere collegate in un elenco descritto da una struttura NET_BUFFER_LIST. Una struttura NET_BUFFER_LIST fornisce anche spazio di archiviazione per i dati fuori banda (OOB) che si applicano a tutte le strutture NET_BUFFER nell'elenco.
Tutti i componenti nella stack di driver di rete di prossima generazione Microsoft, incluso il trasporto TCP/IP e Winsock, usano l'impacchettamento dati NET_BUFFER. La creazione di pacchetti di dati uniformi in tutto lo stack di driver elimina la necessità di riassemblare i dati, semplifica la gestione dei dati e riduce il numero di chiamate di funzione.
Per supportare driver meno recenti che usano strutture NDIS_PACKET, NDIS 6.0 converte le strutture NDIS_PACKET in strutture NET_BUFFER e viceversa. Questa traduzione è trasparente per i driver NDIS.
NDIS propaga i requisiti di riempimento dei dati di un driver ai driver di livello superiore. Quando si allocano strutture NET_BUFFER e NET_BUFFER_LIST per l'invio di dati, un driver di livello superiore alloca spazio dati sufficiente per supportare tutti i driver di livello inferiore nello stack. Di conseguenza, i driver di livello inferiore non devono allocare spazio buffer aggiuntivo per accogliere le intestazioni specifiche del livello. A questo scopo, invece, possono usare lo spazio di riempimento preallocato.
Per altre informazioni sull'architettura NET_BUFFER, vedere NET_BUFFER Architecture.