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;

Member

Next

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

Size

Die Größe des gesamten Kontextbereichs in Byte 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. Der Offset-Member gibt auch die Größe des nicht verwendeten Kontextbereichs in byte in der NET_BUFFER_LIST_CONTEXT-Struktur an.

ContextData

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

Hinweise

Jede NET_BUFFER_LIST-Struktur kann eine vorab zugewiesene NET_BUFFER_LIST_CONTEXT-Struktur enthalten. Da eine NET_BUFFER_LIST-Struktur durch den Treiberstapel wandert, kann die verknüpfte Liste der NET_BUFFER_LIST_CONTEXT-Strukturen erweitert werden, um zusätzlichen Datenspeicher für jeden Treiber aufzunehmen.

Treiber sollten die folgenden NDIS-Makros und -Funktionen verwenden, um auf Member in einer NET_BUFFER_LIST_CONTEXT-Struktur zuzugreifen und diese 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 jeden erforderlichen Kontextdatenspeicherplatz vorab zuweisen, wenn der Treiber einen NET_BUFFER_LIST Strukturpool zuordnet. Um diesen Datenbereich vorab zuzuspeichern, ruft ein Treiber die NdisAllocateNetBufferListPool-Funktion und gibt dann den erforderlichen Datenspeicherplatz im ContextSize-Parameter an. Das Vorabspeichern dieses Datenspeichers erspart NDIS die Zuweisung von Arbeitsspeicher in den Empfangs- und Sendepfaden.
Hinweis NDIS schätzt den erforderlichen Kontextdatenspeicherplatz und passt bei Bedarf den zugeordneten Datenspeicherplatz an die Anforderungen für den gesamten Treiberstapel an.
 
Der Offset-Member gibt die Menge des nicht verwendeten Kontextbereichs in der NET_BUFFER_LIST_CONTEXT-Struktur an. Das Offset-Element 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 Pufferbereich in der NET_BUFFER_LIST_CONTEXT-Struktur zuzuweisen. Bei Bedarf ordnet NDIS eine neue NET_BUFFER_LIST_CONTEXT-Struktur mit zusätzlichem Speicherplatz zu, um die Anforderung zu berücksichtigen. NDIS-Treiber rufen die NdisFreeNetBufferListContext-Funktion , um den Pufferspeicher frei zu geben.

Verwenden Sie die Schaltfläche NET_BUFFER_LIST_CONTEXT_DATA_SIZE Makro, um die Größe des verwendeten Kontextbereichs abzurufen. Verwenden Sie die Schaltfläche 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
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Kopfzeile ndis/nbl.h (include ndis.h)

Weitere Informationen

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT_DATA_SIZE NET_BUFFER_LIST_CONTEXT_DATA_START NdisAllocateNetBufferListContext NdisAllocateNetBufferListPool

NdisFreeNetBufferListContext