WdfMemoryCreateFromLookaside-Funktion (wdfmemory.h)
[Gilt nur für KMDF]
Die WdfMemoryCreateFromLookaside-Methode erstellt ein Frameworkspeicherobjekt und ruft einen Speicherpuffer aus einer angegebenen Lookaside-Liste ab.
Syntax
NTSTATUS WdfMemoryCreateFromLookaside(
[in] WDFLOOKASIDE Lookaside,
[out] WDFMEMORY *Memory
);
Parameter
[in] Lookaside
Ein Handle für ein Framework-Lookaside-list-Objekt, das durch Aufrufen von WdfLookasideListCreate abgerufen wird.
[out] Memory
Ein Zeiger auf einen Speicherort, der ein Handle für das neue Frameworkspeicherobjekt empfängt.
Rückgabewert
WdfMemoryCreateFromLookaside gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Ein ungültiger Parameter wurde erkannt. |
|
Es war nicht genügend Arbeitsspeicher vorhanden. |
Diese Methode kann auch andere NTSTATUS-Werte zurückgeben.
Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
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.
Das Framework stellt ein Handle für ein Speicherobjekt bereit, das den Puffer darstellt. Wenn das Framework das Speicherobjekt erstellt, verwendet es Objektattribute, die der Treiber beim Aufrufen von WdfMemoryCreateFromLookaside bereitgestellt hat.
Wenn Ihr Treiber die Verwendung eines Speicherobjekts abgeschlossen hat, das er aus einer Lookaside-Liste abgerufen hat, muss der Treiber WdfObjectDelete aufrufen, um das Speicherobjekt an die Suchliste zurückzugeben.
Weitere Informationen zu Frameworkspeicherobjekten und Suchlisten finden Sie unter Verwenden von Speicherpuffern.
Wenn Lookaside-list-Puffer aus dem ausgelagerten Speicherpool zugeordnet werden, muss die WdfMemoryCreateFromLookaside-Methode unter IRQL <= APC_LEVEL aufgerufen werden. Andernfalls kann die -Methode unter IRQL <= DISPATCH_LEVEL aufgerufen werden.
Beispiele
Im folgenden Codebeispiel wird eine Suchliste erstellt und das Handle der Liste im kontextbezogenen Bereich des treiberdefinierten Geräteobjekts gespeichert. Anschließend ruft der Treiber einen Puffer aus der Lookaside-Liste ab.
PDRIVER_CONTEXT driverContext;
WDFMEMORY memHandle;
driverContext = GetDriverContext(driver);
status = WdfLookasideListCreate(
WDF_NO_OBJECT_ATTRIBUTES,
sizeof(MY_LOOKASIDE_BUFFER),
NonPagedPool,
WDF_NO_OBJECT_ATTRIBUTES,
MY_POOL_TAG,
&driverContext->LookasideListHandle
);
...
status = WdfMemoryCreateFromLookaside(
driverContext->LookasideListHandle,
&memHandle
);
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
KMDF-Mindestversion | 1.0 |
Kopfzeile | wdfmemory.h (einschließen von Wdf.h) |
Bibliothek | Wdf01000.sys (siehe Versionsverwaltung der Frameworkbibliothek).) |
IRQL | Weitere Informationen finden Sie im Abschnitt mit den Hinweisen. |
DDI-Complianceregeln | DriverCreate(kmdf) |