WdfMemoryCreateFromLookaside-Funktion (wdfmemory.h)
[Gilt nur für KMDF]
Die WdfMemoryCreateFromLookaside--Methode erstellt ein Framework-Speicherobjekt und ruft einen Speicherpuffer aus einer angegebenen Lookaside-Liste ab.
Syntax
NTSTATUS WdfMemoryCreateFromLookaside(
[in] WDFLOOKASIDE Lookaside,
[out] WDFMEMORY *Memory
);
Die Parameter
[in] Lookaside
Ein Handle für ein Framework-Lookaside-List-Objekt, das durch Aufrufen WdfLookasideListCreateabgerufen wird.
[out] Memory
Ein Zeiger auf eine Position, die ein Handle für das neue Framework-Speicherobjekt 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. |
|
Nicht genügend Arbeitsspeicher vorhanden. |
Diese Methode kann auch andere NTSTATUS-Wertezurückgeben.
Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.
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.
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 WdfMemoryCreateFromLookasideangegeben hat.
Wenn der Treiber ein Speicherobjekt verwendet hat, das es aus einer Lookaside-Liste abgerufen hat, muss der Treiber WdfObjectDelete aufrufen, um das Speicherobjekt an die Lookaside-Liste zurückzugeben.
Weitere Informationen zu Framework-Speicherobjekten und Lookaside-Listen finden Sie unter Verwenden von Speicherpuffern.
Wenn Lookaside-Listenpuffer aus dem ausgelagerten Speicherpool zugeordnet werden, muss die WdfMemoryCreateFromLookaside- methode bei IRQL <= APC_LEVEL aufgerufen werden. Andernfalls kann die Methode bei IRQL <= DISPATCH_LEVEL aufgerufen werden.
Beispiele
Im folgenden Codebeispiel wird eine Lookaside-Liste erstellt und das Handle der Liste im Kontextbereich 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 |
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) |