NET_BUFFER Struktur (ndis/nbl.h)
Die NET_BUFFER-Struktur gibt Daten an, die über das Netzwerk übertragen oder empfangen werden.
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;
Next
Ein Zeiger auf die nächste NET_BUFFER Struktur in einer verknüpften Liste mit NET_BUFFER Strukturen. Wenn es sich bei dieser Struktur um die letzte NET_BUFFER-Struktur in der Liste handelt, ist dieses Element NULL.
CurrentMdl
Ein Zeiger auf die erste MDL, die der aktuelle Treiber verwendet. Dieser Member bietet eine Optimierung, die die Leistung verbessert, indem alle MDLs übersprungen werden, die der aktuelle Treiber nicht verwendet.
CurrentMdlOffset
Der Offset in Bytes zum Anfang des verwendeten Datenbereichs in der MDL, der vom CurrentMdl-Element 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 verwendeten Datenbereichs in Bytes.
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
Für die zukünftige Verwendung reserviert.
NdisPoolHandle
Ein Poolhandle, das den NET_BUFFER Pools 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 ihre eigenen Zwecke verwenden. Zwischentreiber können diesen Member nur verwenden, wenn es noch nicht verwendet wird.
MiniportReserved[4]
Reserviert für die Verwendung durch Miniporttreiber. Miniport-Treiber und NDIS-Zwischentreiber 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 Scatter/Gather-Liste für DMA.
NDIS-Treiber können die folgenden Funktionen aufrufen, um eine NET_BUFFER-Struktur zuzuordnen und zu initialisieren:
NDIS-Treiber können den NdisAllocateNetBufferListPool-Funktion , und legen Sie dann das fAllocateNetBuffer-Element der NET_BUFFER_LIST_POOL_PARAMETERS-Struktur auf TRUE fest, wenn ein NET_BUFFER_LIST Strukturpool zugewiesen wird. In diesem Fall wird jeder NET_BUFFER_LIST Struktur, die der Treiber aus dem Pool ordnet, eine NET_BUFFER Struktur vorab zugeordnet.An jede NET_BUFFER Struktur verkettet sind mindestens ein Pufferdeskriptor, die Puffer zuordnen, die Netzwerkpaketdaten enthalten. Diese Pufferdeskriptoren werden als MDL-Kette im NetBufferHeader-Element angegeben. Solche Netzwerkpaketdaten wurden entweder empfangen oder werden übertragen.
Um auf zusätzlichen Datenspeicher in der MDL-Kette zuzugreifen, können NDIS-Treiber die folgenden Funktionen aufrufen:
NDIS-Treiber verwenden in der Regel die Member MiniportReserved oder ProtocolReserved der NET_BUFFER-Struktur, um NET_BUFFER Strukturkontextinformationen zu verwalten.Weitere Informationen zur Verwendung von Netzpuffern finden Sie unter NET_BUFFER-Architektur.
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt in NDIS 6.0 und höher. |
Kopfzeile | ndis/nbl.h (einschließlich ndis.h) |
NET_BUFFER_LIST_POOL_PARAMETERS
NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool NdisMSendNetBufferListsComplete NdisRetreatNetBufferDataStart NdisRetreatNetBufferListDataStart