struttura NET_BUFFER (ndis/nbl.h)
La struttura NET_BUFFER specifica i dati trasmessi o ricevuti in 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;
Membri
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 tutti gli ELENCHI MDL non usati dal driver corrente.
CurrentMdlOffset
Offset, in byte, all'inizio del utilizzato spazio dati nel file MDL specificato dal membro CurrentMdl.
DataLength
Lunghezza, in byte, dello spazio dati utilizzato nella catena MDL. La lunghezza massima è 0xFFFFFFFF byte.
stDataLength
Lunghezza, in byte, dello spazio dati utilizzato 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 dll che eseguono il mapping di un buffer di dati. Il buffer di 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 utilizzato dal protocollo TCP/IP.
Reserved
Riservato per uso futuro.
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 ai propri scopi. 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 proprio scopo.
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.
Osservazioni
I driver NDIS possono chiamare le funzioni seguenti per allocare e inizializzare una struttura NET_BUFFER:
I driver NDIS possono chiamare il 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 allocata dal driver dal pool.Concatenati a ogni struttura NET_BUFFER sono uno o più descrittori di buffer che eseguono il mapping dei 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 verranno trasmessi.
Per accedere a spazio dati aggiuntivo nella catena MDL, i driver NDIS possono chiamare le funzioni seguenti:
I driver NDIS usano in genere i MiniportReserved o i membri ProtocolReserved della struttura di NET_BUFFER per mantenere le informazioni sul contesto della struttura di NET_BUFFER.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_LIST_POOL_PARAMETERS
NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool NdisMSendNetBufferListsComplete NdisRetreatNetBufferDataStart NdisRetreatNetBufferListDataStart