Freigeben über


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
);

Die 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 Größe des Nichtzero-Objekts in Bytes des Puffers, den das Framework für jedes Speicherobjekt zuweist.

[in] PoolType

Ein POOL_TYPE-typed-Wert, der den Speichertyp angibt, der zugewiesen werden soll.

[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 Zeichenfolge von bis zu vier Zeichen an, getrennt durch einfache Anführungszeichen, in umgekehrter Reihenfolge (z. B. "dcba"). Der ASCII-Wert jedes Zeichens im Tag muss zwischen 0 und 127 stehen. 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 Ihres Treibers verwendet. Wenn der Dienstname mit "WDF" beginnt (bei dem Namen wird die Groß-/Kleinschreibung nicht beachtet und die Anführungszeichen nicht eingeschlossen), 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 für 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
Nicht genügend Arbeitsspeicher vorhanden.
 

Eine Liste mit anderen Rückgabewerten, die von der WdfLookasideListCreate Methode möglicherweise zurückgegeben werden, finden Sie unter Framework Object Creation Errors.

Diese Methode kann auch andere NTSTATUS-Wertezurü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 vom WdfDriverCreate-Methode erstellt wird. 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 übergeordnete Standardobjekt nicht ändert, sollte der Treiber das Lookaside-List-Objekt löschen, wenn er die Verwendung des Objekts abgeschlossen hat. andernfalls bleibt das Lookaside-List-Objekt erhalten, bis der E/A-Manager den Treiber entlädt.

Wenn Ihr Treiber eine WDF_OBJECT_ATTRIBUTES Struktur für die LookasideAttributes und die MemoryAttributes Parameter bereitstellt und beide Strukturen ein Geräteobjekt als übergeordnetes Objekt angeben, müssen 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 parameter PoolType 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 WdfLookasideListCreateverwendet, finden Sie unter WdfMemoryCreateFromLookaside.

Anforderungen

Anforderung Wert
Zielplattform universell
Minimale KMDF-Version 1.0
Kopfzeile wdfmemory.h (include Wdf.h)
Bibliothek Wdf01000.sys (siehe Framework-Bibliotheksversionsverwaltung.)
IRQL Siehe Abschnitt "Hinweise".
DDI-Complianceregeln DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Siehe auch

WDF_OBJECT_ATTRIBUTES

WdfDriverCreate

WdfMemoryCreateFromLookaside