Freigeben über


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

Weitere Informationen

WdfLookasideListCreate

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectDelete