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
);
Die Parameter
[in] DestinationMemory
Ein Handle zu einem Framework-Speicherobjekt, das den Zielpuffer darstellt.
[in] DestinationOffset
Ein Offset (in Byte) 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 byte-Offset, den der angegebene parameter DestinationOffset, war zu groß. |
|
Die Größe des Zielpuffers, den der DestinationOffset Parameter angegeben hat, beginnend mit dem Zieloffset, war größer als der NumBytesToCopyFrom Parameter. |
Diese Methode kann auch andere NTSTATUS-Wertezurückgeben.
Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.
Bemerkungen
Das Framework überprüft, ob der Zielpuffer groß genug ist, um die Datenmenge zu empfangen, die vom NumBytesToCopyFrom Parameter angegeben wird.
Weitere Informationen zu Framework-Speicherobjekten finden Sie unter Verwenden von Speicherpuffern.
Wenn der Quell- oder Zielpuffer aus dem ausgelagerten Speicherpool zugeordnet wurde, muss die WdfMemoryCopyFromBuffer- Methode bei IRQL <= APC_LEVEL aufgerufen werden. Andernfalls kann die Methode bei jedem IRQL aufgerufen werden.
Beispiele
Im folgenden Codebeispiel wird ein Handle für das Framework-Speicherobjekt 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 |
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 (siehe Abschnitt "Hinweise") |
DDI-Complianceregeln | BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCre, MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |