NET_BUFFER Struktur (ndis/nbl.h)
Die NET_BUFFER Struktur gibt Daten an, die über das Netzwerk übertragen oder empfangen werden.
Syntax
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;
Angehörige
Next
Ein Zeiger auf die nächste NET_BUFFER Struktur in einer verknüpften Liste mit NET_BUFFER Strukturen. Wenn diese Struktur die letzte NET_BUFFER Struktur in der Liste ist, ist dieses Element NULL.
CurrentMdl
Ein Zeiger auf die erste MDL, die der aktuelle Treiber verwendet. Dieses Mitglied bietet eine Optimierung, die die Leistung verbessert, indem alle MDLs übersprungen werden, die der aktuelle Treiber nicht verwendet.
CurrentMdlOffset
Der Offset in Byte bis zum Anfang des verwendeten verwendeten Datenbereichs in der MDL, die durch das CurrentMdl Member angegeben wird.
DataLength
Die Länge des verwendeten Datenbereichs in Bytes in der MDL-Kette. Die maximale Länge beträgt 0xFFFFFFFF Bytes.
stDataLength
Die Länge des verwendeten Datenbereichs in Bytes in der MDL-Kette. Die maximale Länge beträgt 0xFFFFFFFF Bytes. Dieses Element ist identisch mit DataLength-, aber sein Typ ist SIZE_T anstelle von ULONG-.
MdlChain
Ein Zeiger auf eine verknüpfte Liste von MDLs, die einen Datenpuffer zuordnen. Der Datenpuffer speichert die Netzwerkdaten.
DataOffset
Der Offset in Bytes vom Anfang der MDL-Kette bis zum Anfang der Netzwerkdaten in der MDL-Kette. Dieser Offset ist auch die Größe des nicht genutzten Datenbereichs in Byte.
Link
Reserviert für NDIS.
NetBufferHeader
Eine NET_BUFFER_HEADER Struktur. Dies ist aus Kompatibilitätsgründen ein Duplikat der oben genannten Union.
ChecksumBias
Die Anzahl der Bytes, die beim Berechnen einer Prüfsumme vom Anfang des Datenpuffers übersprungen werden sollen. Dieses Element wird vom TCP/IP-Protokoll verwendet.
Reserved
Reserviert für die zukünftige Verwendung.
NdisPoolHandle
Ein Poolhandle, das den NET_BUFFER Pool identifiziert, aus dem die NET_BUFFER Struktur zugeordnet wurde.
NdisReserved[2]
Reserviert für NDIS.
ProtocolReserved[6]
Reserviert für die Verwendung durch Protokolltreiber. Protokolltreiber und NDIS-Zwischentreiber können diesen Bereich für eigene Zwecke verwenden. Zwischentreiber können dieses Element nur verwenden, wenn es noch nicht verwendet wird.
MiniportReserved[4]
Reserviert für die Verwendung durch Miniporttreiber. Miniport-Fahrer und NDIS-Zwischenfahrer können diesen Bereich für ihre eigenen Zwecke verwenden.
DataPhysicalAddress
SharedMemoryInfo
Ein Zeiger auf einen NET_BUFFER_SHARED_MEMORY Struktur.
ScatterGatherList
Die SCATTER_GATHER_LIST-Struktur beschreibt eine Punkt-/Sammelliste für DMA.
Bemerkungen
NDIS-Treiber können die folgenden Funktionen aufrufen, um eine NET_BUFFER Struktur zuzuweisen und zu initialisieren:
NDIS-Treiber können die NdisAllocateNetBufferListPool-funktion und legen Sie dann den fAllocateNetBuffer Member der NET_BUFFER_LIST_POOL_PARAMETERS Struktur auf TRUE fest, wenn ein NET_BUFFER_LIST Strukturpool zugeordnet wird. In diesem Fall wird eine NET_BUFFER Struktur mit jeder NET_BUFFER_LIST Struktur vorverteilt, die der Treiber aus dem Pool zuweist.Verkettet mit jeder NET_BUFFER-Struktur sind eine oder mehrere Pufferdeskriptoren, die Puffer mit Netzwerkpaketdaten zuordnen. Diese Pufferdeskriptoren werden als MDL-Kette im NetBufferHeader Member angegeben. Solche Netzwerkpaketdaten wurden entweder empfangen oder werden übertragen.
Um auf zusätzlichen Datenbereich in der MDL-Kette zuzugreifen, können NDIS-Treiber die folgenden Funktionen aufrufen:
NDIS-Treiber verwenden in der Regel die MiniportReserved oder ProtocolReserved Member der NET_BUFFER Struktur, um NET_BUFFER Strukturkontextinformationen beizubehalten.Weitere Informationen zur Verwendung von Netzpuffern finden Sie unter NET_BUFFER Architecture.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Unterstützt in NDIS 6.0 und höher. |
Header- | ndis/nbl.h (include ndis.h) |
Siehe auch
NET_BUFFER_LIST_POOL_PARAMETERS
NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool NdisMSendNetBufferListsComplete NdisRetreatNetBufferDataStart NdisRetreatNetBufferListDataStart