Freigeben über


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
STATUS_INVALID_PARAMETER
Ein ungültiger Parameter wurde erkannt.
STATUS_INVALID_BUFFER_SIZE
Der byte-Offset, den der angegebene parameter DestinationOffset, war zu groß.
STATUS_BUFFER_TOO_SMALL
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)

Siehe auch

WdfMemoryCopyToBuffer-

WdfRequestRetrieveOutputMemory