Partilhar via


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.

Valor de retorno

WdfMemoryCopyFromBuffer retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método poderá retornar um dos seguintes valores:

Código de retorno Descrição
STATUS_INVALID_PARAMETER
Um parâmetro inválido foi detectado.
STATUS_INVALID_BUFFER_SIZE
O deslocamento de bytes que o parâmetro DestinationOffset especificado era muito grande.
STATUS_BUFFER_TOO_SMALL
O tamanho do buffer de destino especificado pelo parâmetro DestinationOffset, começando no deslocamento de destino, foi maior do que o parâmetro NumBytesToCopyFrom.
 

Esse método também pode retornar outros valores NTSTATUS .

Uma verificação de bug ocorre se o driver fornece um identificador de objeto inválido.

Observações

A estrutura verifica se o buffer de destino é grande o suficiente para receber a quantidade de dados que o parâmetro NumBytesToCopyFrom especifica.

Para obter mais informações sobre objetos de memória da 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 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
da 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 de DDI BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmd, MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf)

Consulte também

WdfMemoryCopyToBuffer

WdfRequestRetrieveOutputMemory