WdfMemoryAssignBuffer-Funktion (wdfmemory.h)

[Gilt für KMDF und UMDF]

Die WdfMemoryAssignBuffer-Methode weist einem Speicherobjekt, das ein Treiber durch Aufrufen von WdfMemoryCreatePreallocated erstellt hat, einen angegebenen Puffer zu.

Syntax

NTSTATUS WdfMemoryAssignBuffer(
  [in] WDFMEMORY Memory,
  [in] PVOID     Buffer,
  [in] size_t    BufferSize
);

Parameter

[in] Memory

Ein Handle für ein Frameworkspeicherobjekt, das durch Aufrufen von WdfMemoryCreatePreallocated abgerufen wurde.

[in] Buffer

Ein Zeiger auf einen vom Treiber bereitgestellten Puffer.

[in] BufferSize

Die Größe des Puffers, auf den Buffer verweist, in Bytes ungleich 00.

Rückgabewert

WdfMemoryAssignBuffer gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen der folgenden Werte zurück:

Rückgabecode Beschreibung
STATUS_INVALID_PARAMETER
Ein ungültiger Parameter wurde erkannt.
 

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

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

Hinweise

Die -Methode kann einem Von WdfMemoryCreatePreallocated erstellten Speicherobjekt einen Puffer zuweisen, jedoch nicht einem Speicherobjekt, das von WdfMemoryCreate erstellt wurde.

Der Puffer, auf den der Pufferparameter verweist, kann aus dem auslagerungsfähigen oder nicht ausgelagerten Speicherpool zugeordnet werden. Wenn der Treiber den Puffer aus dem ausgelagerten Pool zuordnet oder der Puffer aus einem ausgelagerten Pool stammt, weil er aus einer Benutzermodusanwendung stammt, muss der Treiber nur auf den Puffer zugreifen, wenn irQL < DISPATCH_LEVEL. (Beachten Sie, dass die Rückruffunktionen EvtCleanupCallback und EvtDestroyCallback des Treibers, sofern angegeben, unter IRQL <= DISPATCH_LEVEL aufgerufen werden können.)

Weitere Informationen zu Frameworkspeicherobjekten finden Sie unter Verwenden von Speicherpuffern.

Beispiele

Im folgenden Codebeispiel wird ein Puffer zugeordnet, und dann wird der Puffer einem Frameworkspeicherobjekt zugewiesen.

PVOID  pNewBuffer = NULL;

pNewBuffer = ExAllocatePoolWithTag(
                                   NonPagedPool,
                                   NEW_BUFFER_SIZE,
                                   MY_DRIVER_TAG
                                   );
if (pNewBuffer == NULL){
    goto Error;
}

status = WdfMemoryAssignBuffer(
                               memHandle,
                               pNewBuffer,
                               NEW_BUFFER_SIZE
                               );

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdfmemory.h (einschließen von Wdf.h)
Bibliothek Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL Beliebige Ebene
DDI-Complianceregeln BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf)

Weitere Informationen

ExAllocatePoolWithTag

WdfMemoryCreatePreallocated