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
);

Parameter

[in] Lookaside

Ein Handle zu einem Framework-Lookaside-List-Objekt, das durch Aufrufen von WdfLookasideListCreate abgerufen wird.

[out] Memory

Ein Zeiger auf einen Speicherort, der ein Handle an 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
Es gab nicht genügend Arbeitsspeicher.
 

Diese Methode kann auch andere NTSTATUS-Werte zurückgeben.

Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.

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 von WdfMemoryCreateFromLookaside bereitgestellt hat.

Wenn Ihr Treiber ein Speicherobjekt verwendet hat, das er 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-List-Puffer aus dem seitenfähigen Speicherpool zugewiesen 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 der 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

   
Zielplattform Universell
KMDF-Mindestversion 1.0
Header wdfmemory.h (include Wdf.h)
Bibliothek Wdf01000.sys (siehe Framework-Bibliotheksversioning.)
IRQL Siehe Abschnitt "Hinweise".
DDI-Complianceregeln DriverCreate(kmdf)

Siehe auch

WdfLookasideListCreate

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectDelete