NET_BUFFER struttura (ndis/nbl.h)
La struttura NET_BUFFER specifica i dati trasmessi o ricevuti sulla rete.
Sintassi
typedef struct _NET_BUFFER {
union {
struct {
NET_BUFFER *Next;
MDL *CurrentMdl;
ULONG CurrentMdlOffset;
union {
ULONG DataLength;
SIZE_T stDataLength;
};
MDL *MdlChain;
ULONG DataOffset;
};
SLIST_HEADER Link;
NET_BUFFER_HEADER NetBufferHeader;
};
USHORT ChecksumBias;
USHORT Reserved;
NDIS_HANDLE NdisPoolHandle;
PVOID NdisReserved[2];
PVOID ProtocolReserved[6];
PVOID MiniportReserved[4];
PHYSICAL_ADDRESS DataPhysicalAddress;
union {
NET_BUFFER_SHARED_MEMORY *SharedMemoryInfo;
SCATTER_GATHER_LIST *ScatterGatherList;
};
} NET_BUFFER, *PNET_BUFFER;
Members
Next
Puntatore alla struttura NET_BUFFER successiva in un elenco collegato di strutture NET_BUFFER. Se questa struttura è l'ultima struttura NET_BUFFER nell'elenco, questo membro è NULL.
CurrentMdl
Puntatore al primo MDL usato dal driver corrente. Questo membro fornisce un'ottimizzazione che migliora le prestazioni ignorando eventuali MDLs che il driver corrente non usa.
CurrentMdlOffset
Offset, in byte, all'inizio dello spazio dati usato nell'MDL specificato dal membro CurrentMdl .
DataLength
Lunghezza, in byte, dello spazio dati usato nella catena MDL. La lunghezza massima è 0xFFFFFFFF byte.
stDataLength
Lunghezza, in byte, dello spazio dati usato nella catena MDL. La lunghezza massima è 0xFFFFFFFF byte. Questo membro è uguale a DataLength, ma il relativo tipo è SIZE_T anziché ULONG.
MdlChain
Puntatore a un elenco collegato di MDLs che esegue il mapping di un buffer di dati. Il buffer dei dati archivia i dati di rete.
DataOffset
Offset, in byte, dall'inizio della catena MDL all'inizio dei dati di rete nella catena MDL. Questo offset è anche la dimensione, in byte, dello spazio dati inutilizzato.
Link
Riservato per NDIS.
NetBufferHeader
Struttura NET_BUFFER_HEADER . Si tratta di un duplicato dell'unione precedente, per motivi di compatibilità.
ChecksumBias
Numero di byte da ignorare dall'inizio del buffer di dati durante il calcolo di un checksum. Questo membro viene usato dal protocollo TCP/IP.
Reserved
Riservato per utilizzi futuri.
NdisPoolHandle
Handle del pool che identifica il pool di NET_BUFFER da cui è stata allocata la struttura NET_BUFFER.
NdisReserved[2]
Riservato per NDIS.
ProtocolReserved[6]
Riservato per l'uso da parte dei driver di protocollo. I driver di protocollo e i driver intermedi NDIS possono usare questa area a scopo personale. I driver intermedi possono usare questo membro solo se non è già in uso.
MiniportReserved[4]
Riservato per l'uso da parte dei driver miniport. I driver miniport e i driver intermedi NDIS possono usare questa area a scopo personale.
DataPhysicalAddress
SharedMemoryInfo
Puntatore a un oggetto NET_BUFFER_SHARED_MEMORY struttura.
ScatterGatherList
La struttura SCATTER_GATHER_LIST descrive un elenco a dispersione/raccolta per DMA.
Commenti
I driver NDIS possono chiamare le funzioni seguenti per allocare e inizializzare una struttura NET_BUFFER:
I driver NDIS possono chiamare Funzione NdisAllocateNetBufferListPool e quindi impostare il membro fAllocateNetBuffer della struttura NET_BUFFER_LIST_POOL_PARAMETERS su TRUE durante l'allocazione di un pool di strutture NET_BUFFER_LIST . In questo caso, una struttura NET_BUFFER viene preallocata con ogni struttura NET_BUFFER_LIST che il driver alloca dal pool.Concatenati a ogni struttura NET_BUFFER sono uno o più descrittori buffer che mappano i buffer che contengono dati del pacchetto di rete. Questi descrittori del buffer vengono specificati come catena MDL nel membro NetBufferHeader . Tali dati dei pacchetti di rete sono stati ricevuti o trasmessi.
Per accedere a uno spazio dati aggiuntivo nella catena MDL, i driver NDIS possono chiamare le funzioni seguenti:
I driver NDIS usano in genere i membri miniportReserved o ProtocolReserved della struttura NET_BUFFER per mantenere le informazioni sul contesto della struttura NET_BUFFER.Per altre informazioni su come usare i buffer net, vedere architettura NET_BUFFER.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato in NDIS 6.0 e versioni successive. |
Intestazione | ndis/nbl.h (include ndis.h) |
Vedi anche
NET_BUFFER_LIST_POOL_PARAMETERS
NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool NdisMSendNetBufferListsComplete NdisRetreatNetBufferDataStart NdisRetreatNetBufferListDataStart