WdfMemoryCopyFromBuffer-Funktion (wdfmemory.h)
[Gilt für KMDF und UMDF]
Die WdfMemoryCopyFromBuffer-Methode kopiert den Inhalt eines angegebenen Quellpuffers in den Puffer eines angegebenen Speicherobjekts.
Syntax
NTSTATUS WdfMemoryCopyFromBuffer(
[in] WDFMEMORY DestinationMemory,
[in] size_t DestinationOffset,
[in] PVOID Buffer,
[in] size_t NumBytesToCopyFrom
);
Parameter
[in] DestinationMemory
Ein Handle für ein Frameworkspeicherobjekt, das den Zielpuffer darstellt.
[in] DestinationOffset
Ein Offset in Bytes vom Anfang des Zielpuffers. Der Kopiervorgang beginnt am angegebenen Offset im Zielpuffer.
[in] Buffer
Ein Zeiger auf einen Quellpuffer.
[in] NumBytesToCopyFrom
Die Anzahl der Bytes, die aus dem Quellpuffer in den Zielpuffer kopiert werden sollen. Dieser Wert darf nicht größer als die Größe des Quellpuffers sein.
Rückgabewert
WdfMemoryCopyFromBuffer 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. |
|
Der byteoffene Offset, den der DestinationOffset-Parameter angegeben hat, war zu groß. |
|
Die Größe des Zielpuffers, den der Parameter DestinationOffset angegeben hat, beginnend beim Zieloffset, war größer als der NumBytesToCopyFrom-Parameter . |
Diese Methode kann auch andere NTSTATUS-Werte zurückgeben.
Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
Hinweise
Das Framework überprüft, ob der Zielpuffer groß genug ist, um die Vom NumBytesToCopyFrom-Parameter angegebenen Datenmenge zu empfangen.
Weitere Informationen zu Frameworkspeicherobjekten finden Sie unter Verwenden von Speicherpuffern.
Wenn der Quell- oder Zielpuffer aus dem ausgelagerten Speicherpool zugeordnet wurde, muss die WdfMemoryCopyFromBuffer-Methode unter IRQL <= APC_LEVEL aufgerufen werden. Andernfalls kann die -Methode in jedem IRQL aufgerufen werden.
Beispiele
Im folgenden Codebeispiel wird ein Handle für das Frameworkspeicherobjekt abgerufen, das den Ausgabepuffer einer E/A-Anforderung darstellt, und dann wird der Inhalt eines anderen Puffers in den Ausgabepuffer der E/A-Anforderung kopiert.
WDFMEMORY memoryBuffer;
NTSTATUS status;
status = WdfRequestRetrieveOutputMemory(
Request,
&memoryBuffer
);
if (!NT_SUCCESS(status)) {
goto Error;
}
status = WdfMemoryCopyFromBuffer(
memoryBuffer,
0,
deviceContext->Buffer,
Length
);
if (!NT_SUCCESS(status)) {
goto Error;
}
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 (siehe Abschnitt "Hinweise") |
DDI-Complianceregeln | BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |