Função WdfMemoryCopyFromBuffer (wdfmemory.h)
[Aplica-se a KMDF e UMDF]
O método WdfMemoryCopyFromBuffer copia o conteúdo de um buffer de origem especificado no buffer de um objeto de memória especificado.
Sintaxe
NTSTATUS WdfMemoryCopyFromBuffer(
[in] WDFMEMORY DestinationMemory,
[in] size_t DestinationOffset,
[in] PVOID Buffer,
[in] size_t NumBytesToCopyFrom
);
Parâmetros
[in] DestinationMemory
Um identificador para um objeto de memória de estrutura que representa o buffer de destino.
[in] DestinationOffset
Um deslocamento, em bytes, desde o início do buffer de destino. A operação de cópia começa no deslocamento especificado no buffer de destino.
[in] Buffer
Um ponteiro para um buffer de origem.
[in] NumBytesToCopyFrom
O número de bytes a serem copiados do buffer de origem para o buffer de destino. Esse valor não deve ser maior que o tamanho do buffer de origem.
Retornar valor
WdfMemoryCopyFromBuffer retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método pode retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
Um parâmetro inválido foi detectado. |
|
O deslocamento de bytes especificado pelo parâmetro DestinationOffset era muito grande. |
|
O tamanho do buffer de destino especificado pelo parâmetro DestinationOffset , começando no deslocamento de destino, foi maior que o parâmetro NumBytesToCopyFrom . |
Esse método também pode retornar outros valores NTSTATUS.
Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Comentários
A estrutura verifica se o buffer de destino é grande o suficiente para receber a quantidade de dados especificada pelo parâmetro NumBytesToCopyFrom .
Para obter mais informações sobre objetos de memória de estrutura, consulte Usando buffers de memória.
Se o buffer de origem ou destino tiver sido alocado do pool de memória paginável, o método WdfMemoryCopyFromBuffer deverá ser chamado em IRQL <= APC_LEVEL. Caso contrário, o método pode ser chamado em qualquer IRQL.
Exemplos
O exemplo de código a seguir obtém um identificador para o objeto de memória da estrutura que representa o buffer de saída de uma solicitação de E/S e, em seguida, copia o conteúdo de outro buffer para o buffer de saída da solicitação de E/S.
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;
}
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Versão mínima do UMDF | 2,0 |
Cabeçalho | wdfmemory.h (inclua Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | Qualquer nível (consulte a seção Comentários) |
Regras de conformidade da DDI | BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |