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 des Puffers, den das Framework jedem Speicherobjekt zuweist.

[in] PoolType

Ein POOL_TYPE typisierter Wert, der den Typ des zu zuweisenden Arbeitsspeichers 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 Suchliste abruft. Dieser Parameter ist optional und kann WDF_NO_OBJECT_ATTRIBUTES werden.

[in, optional] PoolTag

Ein vom Treiber definiertes Pooltag für den Puffer jedes Speicherobjekts. Debugger zeigen dieses Tag an. Treiber geben in der Regel eine Zeichenfolge mit bis zu vier Zeichen an, die durch einzelne Anführungszeichen in umgekehrter Reihenfolge getrennt ist (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 Ihres Treibers verwendet. Wenn der Dienstname mit "WDF" beginnt (bei dem Namen wird die Groß-/Kleinschreibung nicht beachtet und die Anführungszeichen nicht berücksichtigt), 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-Member der WDF_DRIVER_CONFIG Struktur verwenden, um ein Standardpooltag anzugeben.

[out] Lookaside

Ein Zeiger auf eine Position, die ein Handle auf 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 war nicht genügend Arbeitsspeicher vorhanden.
 

Eine Liste mit anderen Rückgabewerten, die von der WdfLookasideListCreate-Methode möglicherweise zurückgegeben werden, finden Sie unter Fehler beim Erstellen von Frameworkobjekten.

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

Hinweise

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 übergeordnete Standardobjekt 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 E/A-Manager Den Treiber entladen hat.

Wenn Ihr Treiber eine WDF_OBJECT_ATTRIBUTES-Struktur für die Parameter LookasideAttributes und MemoryAttributes bereitstellt und beide Strukturen ein Geräteobjekt als übergeordnetes Objekt angeben, müssen die Geräteobjekthandles identisch sein.

Weitere Informationen zu Frameworkspeicherobjekten und Suchlisten finden Sie unter Verwenden von Speicherpuffern.

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

Beispiele

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

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
Kopfzeile wdfmemory.h (einschließen von Wdf.h)
Bibliothek Wdf01000.sys (siehe Versionierung der Frameworkbibliothek.)
IRQL Weitere Informationen finden Sie im Abschnitt mit den Hinweisen.
DDI-Complianceregeln DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Weitere Informationen

WDF_OBJECT_ATTRIBUTES

WdfDriverCreate

WdfMemoryCreateFromLookaside