Freigeben über


NET_BUFFER_LIST_CONTEXT Struktur (ndis/nbl.h)

Die NET_BUFFER_LIST_CONTEXT Struktur speichert Kontextinformationen für eine NET_BUFFER_LIST Struktur.

Syntax

typedef struct _NET_BUFFER_LIST_CONTEXT {
  NET_BUFFER_LIST_CONTEXT *Next;
  USHORT                  Size;
  USHORT                  Offset;
  UCHAR                   ContextData[];
} NET_BUFFER_LIST_CONTEXT, *PNET_BUFFER_LIST_CONTEXT;

Angehörige

Next

Ein Zeiger auf die nächste NET_BUFFER_LIST_CONTEXT Struktur in einer verknüpften Liste mit NET_BUFFER_LIST_CONTEXT Strukturen.

Size

Die Größe des gesamten Kontextbereichs in Bytes in der NET_BUFFER_LIST_CONTEXT Struktur, einschließlich des verwendeten und nicht verwendeten Kontextbereichs.

Offset

Der Offset in Bytes vom Anfang des Kontextdatenpuffers bis zum Anfang der Kontextdaten in der NET_BUFFER_LIST_CONTEXT Struktur. Das Offset-Element Member gibt auch die Größe in Byte des nicht verwendeten Kontextbereichs in der NET_BUFFER_LIST_CONTEXT Struktur an.

ContextData

Der Kontextdatenpuffer. Die Kontextdaten können alle Informationen enthalten, die ein Treiber benötigt.

Bemerkungen

Jede NET_BUFFER_LIST Struktur kann eine vordefinierte NET_BUFFER_LIST_CONTEXT Struktur enthalten. Da eine NET_BUFFER_LIST Struktur durch den Treiberstapel verläuft, kann die verknüpfte Liste der NET_BUFFER_LIST_CONTEXT Strukturen erweitert werden, um zusätzlichen Datenraum für jeden Treiber zu berücksichtigen.

Treiber sollten die folgenden NDIS-Makros und -Funktionen verwenden, um auf Member in einer NET_BUFFER_LIST_CONTEXT Struktur zuzugreifen und sie zu bearbeiten:

Das ContextData--Element der NET_BUFFER_LIST_CONTEXT-Struktur gibt den Datenteil der NET_BUFFER_LIST_CONTEXT Struktur an. Um die Systemleistung zu verbessern, sollte ein Treiber alle erforderlichen Kontextdatenplätze vorab bereitstellen, wenn der Treiber einen NET_BUFFER_LIST Strukturpool zuweist. Um diesen Datenbereich vorab zu verwenden, ruft ein Treiber den NdisAllocateNetBufferListPool Funktion und gibt dann die Menge an Datenspeicher an, die im parameter ContextSize erforderlich ist. Die Vorspeicherung dieses Datenspeicherplatzes spart NDIS aus dem Zuordnen des Speichers in den Empfangs- und Sendepfaden.
Hinweis NDIS schätzt den erforderlichen Kontextdatenbereich und passt bei Bedarf den zugeordneten Datenbereich an, um die Anforderungen für den gesamten Treiberstapel zu erfüllen.
 
Das Offset-Element Member gibt die Menge des nicht verwendeten Kontextbereichs in der NET_BUFFER_LIST_CONTEXT Struktur an. Das Offset-Element Member gibt auch den Offset vom Anfang des ContextData--Elements bis zum Anfang des verwendeten Kontextdatenbereichs an.

NDIS-Treiber rufen die NdisAllocateNetBufferListContext Funktion, um zusammenhängenden Pufferraum in der NET_BUFFER_LIST_CONTEXT Struktur zuzuweisen. Bei Bedarf weist NDIS eine neue NET_BUFFER_LIST_CONTEXT Struktur mit zusätzlichem Platz zu, um die Anforderung zu berücksichtigen. NDIS-Treiber rufen die NdisFreeNetBufferListContext Funktion, um den Pufferspeicher frei zu geben.

Verwenden Sie die NET_BUFFER_LIST_CONTEXT_DATA_SIZE Makro, um die Größe des verwendeten Kontextbereichs abzurufen. Verwenden Sie die NET_BUFFER_LIST_CONTEXT_DATA_START Makro, um die Startadresse des verwendeten Kontextbereichs abzurufen.

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

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT_DATA_SIZE NET_BUFFER_LIST_CONTEXT_DATA_START NdisAllocateNetBufferListContext NdisAllocateNetBufferListPool

NdisFreeNetBufferListContext