Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[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 |
|---|---|
|
Ein ungültiger Parameter wurde erkannt. |
|
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) |