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