Freigeben über


WdfMemoryAssignBuffer-Funktion (wdfmemory.h)

[Gilt für KMDF und UMDF]

Die WdfMemoryAssignBuffer--Methode weist einem Speicherobjekt einen angegebenen Puffer zu, den ein treiber, der durch Aufrufen WdfMemoryCreatePreallocatederstellt wurde.

Syntax

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

Die Parameter

[in] Memory

Ein Handle für ein Framework-Speicherobjekt, das durch Aufrufen von WdfMemoryCreatePreallocatedabgerufen wurde.

[in] Buffer

Ein Zeiger auf einen vom Treiber bereitgestellten Puffer.

[in] BufferSize

Die Nichtzero-Größe des Puffers, auf den Puffer verweist, in Byte.

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-Wertezurückgeben.

Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.

Bemerkungen

Die Methode kann einem Speicherobjekt einen Puffer zuweisen, der erstellt WdfMemoryCreatePreallocated erstellt, jedoch nicht einem Speicherobjekt, das WdfMemoryCreate erstellt.

Der Puffer, auf den der Buffer Parameter verweist, kann aus dem ausgelagerten oder nicht ausgelagerten Speicherpool zugeordnet werden. Wenn der Treiber den Puffer aus dem ausgelagerten Pool zuweist oder der Puffer aus einem ausgelagerten Pool stammt, da er von einer Benutzermodusanwendung stammt, muss der Treiber nur auf den Puffer auf IRQL-< DISPATCH_LEVEL zugreifen. (Beachten Sie, dass die EvtCleanupCallback- und EvtDestroyCallback- Rückruffunktionen( sofern angegeben) bei IRQL <= DISPATCH_LEVEL aufgerufen werden können.)

Weitere Informationen zu Framework-Speicherobjekten finden Sie unter Verwenden von Speicherpuffern.

Beispiele

Im folgenden Codebeispiel wird ein Puffer zugewiesen und anschließend einem Frameworkspeicherobjekt der Puffer 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
Minimale KMDF-Version 1.0
Mindest-UMDF-Version 2.0
Kopfzeile wdfmemory.h (include Wdf.h)
Bibliothek Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL Beliebige Ebene
DDI-Complianceregeln BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCre, MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf)

Siehe auch

ExAllocatePoolWithTag-

WdfMemoryCreatePreallocated