Freigeben über


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

Hinweis Der Name dieses Elements ist NdisReserved1 für NDIS 6.0-Treiber und ist DataPhysicalAddress für NDIS 6.1 und höher. Für NDIS 6.0-Treiber ist dieses Mitglied für NDIS reserviert.
 
Die physische Adresse des Datenteils eines Frames. Dieses Element sollte null sein, wenn der treiber, der NET_BUFFER zugewiesen wurde, die Adresse nicht angibt. Dieses Element ist nur gültig, wenn das NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER- oder NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD-Flag im NblFlags Element der NET_BUFFER_LIST-Struktur festgelegt ist, die dem NET_BUFFER zugeordnet ist.
Hinweis Ein Miniporttreiber kann den DataPhysicalAddress Member der NET_BUFFER-Struktur festlegen, auch wenn die Struktur keinem geteilten Frame zugeordnet ist. In diesem Fall enthält DataPhysicalAddress die physische Adresse der Header-MDL.
 

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.
Hinweis Nur ein Treiber kann MiniportReserved- oder ProtocolReserved-Member verwenden. Wenn ein anderer Treiber eines dieser Member verwendet hat, kann ein Zwischentreiber sie daher nicht verwenden.
 
Verwenden Sie die folgenden Makros und Funktionen, um auf Elemente der NET_BUFFER-Struktur zuzugreifen:

NET_BUFFER_NEXT_NB

NET_BUFFER_FIRST_MDL

NET_BUFFER_DATA_OFFSET

NET_BUFFER_DATA_LENGTH

NET_BUFFER_PROTOCOL_RESERVED

NET_BUFFER_MINIPORT_RESERVED

NET_BUFFER_CHECKSUM_BIAS

NET_BUFFER_CURRENT_MDL

NET_BUFFER_CURRENT_MDL_OFFSET

NdisGetPoolFromNetBuffer

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_CHECKSUM_BIAS

NET_BUFFER_CURRENT_MDL

NET_BUFFER_CURRENT_MDL_OFFSET

NET_BUFFER_DATA_LENGTH

NET_BUFFER_DATA_OFFSET

NET_BUFFER_FIRST_MDL

NET_BUFFER_HEADER

NET_BUFFER_LIST

NET_BUFFER_LIST_POOL_PARAMETERS

NET_BUFFER_MINIPORT_RESERVED

NET_BUFFER_NEXT_NB

NET_BUFFER_PROTOCOL_RESERVED

NdisAllocateNetBuffer

NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool

NdisGetPoolFromNetBuffer

NdisMSendNetBufferListsComplete NdisRetreatNetBufferDataStart NdisRetreatNetBufferListDataStart

SCATTER_GATHER_LIST