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

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

Weitere Informationen

WdfMemoryCopyToBuffer

WdfRequestRetrieveOutputMemory