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 |
---|---|
|
Ein ungültiger Parameter wurde erkannt. |
|
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) |