Condividi tramite


struttura NET_BUFFER_LIST_CONTEXT (ndis/nbl.h)

La struttura NET_BUFFER_LIST_CONTEXT archivia le informazioni di contesto per una struttura NET_BUFFER_LIST.

Sintassi

typedef struct _NET_BUFFER_LIST_CONTEXT {
  NET_BUFFER_LIST_CONTEXT *Next;
  USHORT                  Size;
  USHORT                  Offset;
  UCHAR                   ContextData[];
} NET_BUFFER_LIST_CONTEXT, *PNET_BUFFER_LIST_CONTEXT;

Membri

Next

Puntatore alla struttura NET_BUFFER_LIST_CONTEXT successiva in un elenco collegato di strutture NET_BUFFER_LIST_CONTEXT.

Size

Dimensioni, in byte, dell'intero spazio di contesto nella struttura NET_BUFFER_LIST_CONTEXT, inclusi lo spazio di contesto utilizzato e inutilizzato.

Offset

Offset, in byte, dall'inizio del buffer dei dati di contesto all'inizio dei dati di contesto nella struttura NET_BUFFER_LIST_CONTEXT. Il membro offset specifica anche le dimensioni in byte dello spazio di contesto inutilizzato nella struttura NET_BUFFER_LIST_CONTEXT.

ContextData

Buffer dei dati di contesto. I dati di contesto possono includere qualsiasi informazione richiesta da un driver.

Osservazioni

Ogni struttura NET_BUFFER_LIST può includere una struttura NET_BUFFER_LIST_CONTEXT preallocata. Poiché una struttura NET_BUFFER_LIST attraversa lo stack di driver, l'elenco collegato di strutture NET_BUFFER_LIST_CONTEXT può espandersi per supportare spazio dati aggiuntivo per ogni driver.

I driver devono usare le macro e le funzioni NDIS seguenti per accedere e modificare i membri in una struttura NET_BUFFER_LIST_CONTEXT:

Il membro ContextData della struttura NET_BUFFER_LIST_CONTEXT specifica la parte dei dati della struttura NET_BUFFER_LIST_CONTEXT. Per migliorare le prestazioni del sistema, un driver deve preallocare qualsiasi spazio dati di contesto necessario quando il driver alloca un pool di strutture NET_BUFFER_LIST. Per preallocare questo spazio dati, un driver chiama funzione NdisAllocateNetBufferListPool e quindi specifica la quantità di spazio dati necessaria nel parametro ContextSize. La preallocazione di questo spazio dati consente di risparmiare NDIS dall'allocazione della memoria nei percorsi di ricezione e invio.
Nota NDIS stima lo spazio dati di contesto richiesto e, se necessario, regola lo spazio dati allocato in modo da soddisfare i requisiti per l'intero stack di driver.
 
Il membro Offset specifica la quantità di spazio di contesto inutilizzato nella struttura NET_BUFFER_LIST_CONTEXT. Il membro offset indica anche l'offset dall'inizio del membro ContextData all'inizio dello spazio dati del contesto utilizzato.

I driver NDIS chiamano il funzione di NdisAllocateNetBufferListContext per allocare spazio del buffer contiguo nella struttura NET_BUFFER_LIST_CONTEXT. Se necessario, NDIS alloca una nuova struttura NET_BUFFER_LIST_CONTEXT con spazio aggiuntivo per rispettare la richiesta. I driver NDIS chiamano il funzione NdisFreeNetBufferListContext per liberare lo spazio del buffer.

Usare NET_BUFFER_LIST_CONTEXT_DATA_SIZE macro per ottenere le dimensioni dello spazio del contesto utilizzato. Usare NET_BUFFER_LIST_CONTEXT_DATA_START macro per ottenere l'indirizzo iniziale dello spazio del contesto usato.

Per altre informazioni su come usare i net buffer, vedere NET_BUFFER Architecture.

Fabbisogno

Requisito Valore
client minimo supportato Supportato in NDIS 6.0 e versioni successive.
intestazione ndis/nbl.h (include ndis.h)

Vedere anche

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT_DATA_SIZE NET_BUFFER_LIST_CONTEXT_DATA_START NdisAllocateNetBufferListContext NdisAllocateNetBufferListPool

NdisFreeNetBufferListContext