Freigeben über


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

Siehe auch

WdfLookasideListCreate

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectDelete-