WdfLookasideListCreate-Funktion (wdfmemory.h)

[Gilt nur für KMDF]

Die WdfLookasideListCreate-Methode erstellt ein Lookaside-list-Objekt, aus dem der Treiber Speicherobjekte abrufen kann.

Syntax

NTSTATUS WdfLookasideListCreate(
  [in, optional] PWDF_OBJECT_ATTRIBUTES LookasideAttributes,
  [in]           size_t                 BufferSize,
  [in]           POOL_TYPE              PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
  [in, optional] ULONG                  PoolTag,
  [out]          WDFLOOKASIDE           *Lookaside
);

Parameter

[in, optional] LookasideAttributes

Ein Zeiger auf eine WDF_OBJECT_ATTRIBUTES Struktur, die Objektattribute für das neue Lookaside-List-Objekt enthält. Dieser Parameter ist optional und kann WDF_NO_OBJECT_ATTRIBUTES werden.

[in] BufferSize

Die Nichtzero-Größe in Bytes des Puffers, den das Framework für jedes Speicherobjekt ordnet.

[in] PoolType

Ein POOL_TYPE-typisierter Wert, der den Zuteilungstyp des zuzuweisenden Speichertyps angibt.

[in, optional] MemoryAttributes

Ein Zeiger auf eine WDF_OBJECT_ATTRIBUTES Struktur, die Objektattribute für jedes Speicherobjekt enthält, das der Treiber aus der Lookaside-Liste abruft. Dieser Parameter ist optional und kann WDF_NO_OBJECT_ATTRIBUTES werden.

[in, optional] PoolTag

Ein treiberdefiniertes Pooltag für den Puffer jedes Speicherobjekts. Debugger zeigen dieses Tag an. Treiber geben in der Regel eine Zeichenzeichenfolge von bis zu vier Zeichen an, die durch einzelne Anführungszeichen getrennt sind, in umgekehrter Reihenfolge (z. B. "dcba"). Der ASCII-Wert jedes Zeichens im Tag muss zwischen 0 und 127 sein. Das Debuggen Ihres Treibers ist einfacher, wenn jedes Pooltag eindeutig ist.

Wenn PoolTag null ist, stellt das Framework ein Standardpooltag bereit, das die ersten vier Zeichen des Kernelmodusdienstnamens des Treibers verwendet. Wenn der Dienstname mit "WDF" beginnt (der Name ist nicht groß und enthält nicht die Anführungszeichen), werden die nächsten vier Zeichen verwendet. Wenn weniger als vier Zeichen verfügbar sind, wird "FxDr" verwendet.

Für KMDF-Versionen 1.5 und höher kann Ihr Treiber das DriverPoolTag-Element der WDF_DRIVER_CONFIG Struktur verwenden, um ein Standardpooltag anzugeben.

[out] Lookaside

Ein Zeiger auf eine Position, die ein Handle an das neue Lookaside-List-Objekt empfängt.

Rückgabewert

WdfLookasideListCreate gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen der folgenden Werte zurück:

Rückgabecode Beschreibung
STATUS_INVALID_PARAMETER
Ein ungültiger Parameter wurde erkannt.
STATUS_INSUFFICIENT_RESOURCES
Es gab nicht genügend Arbeitsspeicher.
 

Eine Liste anderer Rückgabewerte, die die WdfLookasideListCreate-Methode zurückgeben kann, finden Sie unter Framework-Objekterstellungsfehler.

Diese Methode kann auch andere NTSTATUS-Werte zurückgeben.

Bemerkungen

Nachdem Ihr Treiber WdfLookasideListCreate aufgerufen hat, um ein Lookaside-List-Objekt zu erstellen, kann der Treiber WdfMemoryCreateFromLookaside aufrufen, um einen Puffer aus der Lookaside-Liste abzurufen.

Standardmäßig ist das übergeordnete Objekt des neuen Lookaside-List-Objekts das Frameworktreiberobjekt, das die WdfDriverCreate-Methode erstellt. Sie können das ParentObject-Element der WDF_OBJECT_ATTRIBUTES Struktur verwenden, um ein anderes übergeordnetes Element anzugeben. Das Framework löscht das Lookaside-List-Objekt, wenn es das übergeordnete Objekt löscht. Wenn Ihr Treiber das Standardelement nicht ändert, sollte der Treiber das Lookaside-List-Objekt löschen, wenn er das Objekt verwendet hat; andernfalls bleibt das Lookaside-List-Objekt erhalten, bis der I/O-Manager Den Treiber entlädt.

Wenn Ihr Treiber eine WDF_OBJECT_ATTRIBUTES Struktur sowohl für die Parameter LookasideAttributes als auch für die Parameter "MemoryAttributes " bereitstellt, und wenn beide Strukturen ein Geräteobjekt als übergeordnetes Objekt angeben, muss die Geräteobjekthandles identisch sein.

Weitere Informationen zu Framework-Speicherobjekten und Lookaside-Listen finden Sie unter Verwenden von Speicherpuffern.

Wenn Ihr Treiber PagedPool für den PoolType-Parameter angibt, muss die WdfLookasideListCreate-Methode bei IRQL <= APC_LEVEL aufgerufen werden. Andernfalls kann die Methode bei IRQL <= DISPATCH_LEVEL aufgerufen werden.

Beispiele

Ein Codebeispiel, das WdfLookasideListCreate verwendet, finden Sie unter WdfMemoryCreateFromLookaside.

Anforderungen

   
Zielplattform Universell
KMDF-Mindestversion 1.0
Header wdfmemory.h (include Wdf.h)
Bibliothek Wdf01000.sys (siehe Framework-Bibliotheksversioning.)
IRQL Siehe Abschnitt "Hinweise".
DDI-Complianceregeln DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Weitere Informationen

WDF_OBJECT_ATTRIBUTES

WdfDriverCreate

WdfMemoryCreateFromLookaside