Freigeben über


NdisInitializeNPagedLookasideList-Funktion (ndis.h)

Die NdisInitializeNPagedLookasideList Funktion initialisiert eine Lookaside-Liste. Nach einer erfolgreichen Initialisierung können nicht seitenbezogene Blöcke mit fester Größe der Lookaside-Liste zugewiesen und freigegeben werden.

Syntax

void NdisInitializeNPagedLookasideList(
  [in]           PNPAGED_LOOKASIDE_LIST Lookaside,
  [in, optional] PALLOCATE_FUNCTION     Allocate,
  [in, optional] PFREE_FUNCTION         Free,
  [in]           ULONG                  Flags,
  [in]           SIZE_T                 Size,
  [in]           ULONG                  Tag,
  [in]           USHORT                 Depth
);

Parameter

[in] Lookaside

Ein Zeiger auf eine NPAGED_LOOKASIDE_LIST Struktur, die den vom Aufrufer bereitgestellten Lookaside-Listenkopf enthält, der initialisiert werden soll. Die Struktur muss 16-Byte auf 64-Bit-Plattformen ausgerichtet sein. Der Treiber muss einen Listenkopf bereitstellen, der sich befindet , d. h. im nicht seitenseitigen Systembereich.

[in, optional] Allocate

Ein Funktionseinstiegspunkt, der entweder NULL- ist, oder gibt den Einstiegspunkt eines vom Aufrufer bereitgestellten Zuordnen-Funktion an, der einen Eintrag der Größe zuweist, die im Size Member angegeben ist, wenn sie aufgerufen wird. Wenn ZuordnenNULL-ist, NdisAllocateFromNPagedLookasideList Funktion weist anschließend Einträge im Namen des Aufrufers zu. Wenn der Aufrufer eine Zuweisen-Funktion bereitstellt, muss er auch eine Free-Funktion bereitstellen.

[in, optional] Free

Ein Funktionseinstiegspunkt, der entweder NULL- ist, oder gibt den Einstiegspunkt einer vom Aufrufer bereitgestellten Free-Funktion an, die einen Eintrag der Größe freigibt, die im element Size angegeben wird, wenn sie aufgerufen wird. Wenn FreeNULL-ist, NdisFreeToNPagedLookasideList Funktion gibt anschließend Einträge im Namen des Aufrufers frei.

[in] Flags

Muss null sein. Dieser Parameter ist reserviert.

[in] Size

Die Größe jedes Eintrags in Bytes, die anschließend aus der Lookaside-Liste zugeordnet werden sollen.

[in] Tag

Ein vom Aufrufer bereitgestelltes Pooltag für Nachschlagelisteneinträge. Das Tag- ist eine Zeichenfolge von vier Zeichen, die durch einfache Anführungszeichen (z. B. "derF") getrennt ist. Die Zeichen werden in der Regel in umgekehrter Reihenfolge angegeben, sodass sie einfacher zu lesen sind, wenn sie pooldumping oder die Poolnutzung im Debugger nachverfolgen.

[in] Depth

Muss null sein. Dieser Parameter ist ebenfalls reserviert.

Rückgabewert

Nichts

Bemerkungen

NdisInitializeNPagedLookasideList initialisiert den vom Aufrufer bereitgestellten Listenkopf, weist jedoch keinen Speicher für Listeneinträge zu. Die Anfangseinträge werden nach Bedarf entweder mit Aufrufen der NdisAllocateFromNPagedLookasideList Funktion oder durch die vom Treiber bereitgestellte Rückruffunktion an der Zuordnen Parameter. Die Liste wird aufgefüllt, wenn der Treiber Einträge zurück in die Liste mit der NdisFreeToNPagedLookasideList Funktion. Einträge werden in der Liste erfasst, bis ein vom System festgelegter, aber dynamisch angepasster Grenzwert erreicht ist. Anschließend werden alle überschüssigen Einträge in der Lookaside-Liste an einen nichtpageierten Pool zurückgegeben, entweder durch NdisFreeToNPagedLookasideList oder mit Aufrufen der vom Treiber bereitgestellten Free Callback-Funktion am Free Parameter.

Alle Einträge in der Lookaside-Liste weisen dieselbe Größe auf, die im Parameter Size angegeben wird. Eine Lookaside-Liste ist besonders nützlich für Treiber, die Kontextbereiche mit fester Größe dynamisch zuordnen und freigeben müssen, in denen der Laufzeitzustand über ihre ausstehenden E/A-Vorgänge beibehalten wird. So sind verbindungsorientierte NDIS-Treiber wahrscheinlich besonders hilfreich, da solche Treiber in der Regel einen dynamischen Satz von Kontextbereichen verwalten, um ausgehende und eingehende Anrufe nachzuverfolgen.

Es ist effizienter für einen Fahrer, dies zuzulassen NdisAllocateFromNPagedLookasideList und NdisFreeToNPagedLookasideList Funktionen zum Verwalten der Zuordnung und Zuordnung von Einträgen (siehe ExAllocatePoolWithTag- und ExFreePool- Funktionen). Ein Treiber, der den Zustand intern über die Speicherauslastung nachverfolgt, kann jedoch Zuweisen von und Free Funktionen für NdisInitializeNPagedLookasideListbereitstellen.

Aufrufer von NdisInitializeNPagedLookasideList- müssen bei IRQL <= DISPATCH_LEVEL ausgeführt werden, werden jedoch in der Regel bei PASSIVE_LEVEL ausgeführt.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt für NDIS 6.0- und NDIS 5.1-Treiber (siehe NdisInitializeNPagedLookasideList (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe NdisInitializeNPagedLookasideList (NDIS 5.1)) in Windows XP.
Zielplattform- Desktop
Header- ndis.h (include Ndis.h)
IRQL- <= DISPATCH_LEVEL (siehe Abschnitt "Hinweise")
DDI-Complianceregeln Irql_Miscellaneous_Function(ndis)

Siehe auch

ExAllocatePoolWithTag-

ExFreePool-

NPAGED_LOOKASIDE_LIST

NdisAllocateFromNPagedLookasideList NdisDeleteNPagedLookasideList NdisFreeToNPagedLookasideList