Funzione WdfMemoryCopyFromBuffer (wdfmemory.h)
[Si applica a KMDF e UMDF]
Il metodo WdfMemoryCopyFromBuffer copia il contenuto di un buffer di origine specificato nel buffer dell'oggetto memoria specificato.
Sintassi
NTSTATUS WdfMemoryCopyFromBuffer(
[in] WDFMEMORY DestinationMemory,
[in] size_t DestinationOffset,
[in] PVOID Buffer,
[in] size_t NumBytesToCopyFrom
);
Parametri
[in] DestinationMemory
Handle per un oggetto memoria del framework che rappresenta il buffer di destinazione.
[in] DestinationOffset
Offset, in byte, dall'inizio del buffer di destinazione. L'operazione di copia inizia con l'offset specificato nel buffer di destinazione.
[in] Buffer
Puntatore a un buffer di origine.
[in] NumBytesToCopyFrom
Numero di byte da copiare dal buffer di origine al buffer di destinazione. Questo valore non deve essere maggiore delle dimensioni del buffer di origine.
Valore restituito
WdfMemoryCopyFromBuffer restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
|
È stato rilevato un parametro non valido. |
|
Offset di byte specificato dal parametro DestinationOffset troppo grande. |
|
La dimensione del buffer di destinazione specificata dal parametro DestinationOffset , a partire dall'offset di destinazione, è maggiore del parametro NumBytesToCopyFrom . |
Questo metodo potrebbe restituire anche altri valori NTSTATUS.
Un controllo di bug si verifica se il driver fornisce un handle di oggetti non valido.
Commenti
Il framework verifica che il buffer di destinazione sia sufficiente per ricevere la quantità di dati specificati dal parametro NumBytesToCopyFrom .
Per altre informazioni sugli oggetti di memoria del framework, vedere Uso dei buffer di memoria.
Se il buffer di origine o di destinazione è stato allocato dal pool di memoria paginabile, il metodo WdfMemoryCopyFromBuffer deve essere chiamato in IRQL <= APC_LEVEL. In caso contrario, il metodo può essere chiamato in qualsiasi IRQL.
Esempio
Nell'esempio di codice seguente viene ottenuto un handle per l'oggetto memoria del framework che rappresenta il buffer di output della richiesta di I/O e quindi copia il contenuto di un altro buffer nel buffer di output della richiesta di I/O.
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;
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1,0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfmemory.h (include Wdf.h) |
Libreria | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | Qualsiasi livello (vedere la sezione Osservazioni) |
Regole di conformità DDI | BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |