Compartilhar via


Função WdfRequestRetrieveUnsafeUserOutputBuffer (wdfrequest.h)

[Aplica-se somente ao KMDF]

O método WdfRequestRetrieveUnsafeUserOutputBuffer recupera o buffer de saída de uma solicitação de E/S, se a técnica da solicitação para acessar buffers de dados não for armazenada em buffer nem E/S direta.

Sintaxe

NTSTATUS WdfRequestRetrieveUnsafeUserOutputBuffer(
  [in]            WDFREQUEST Request,
  [in]            size_t     MinimumRequiredLength,
  [out]           PVOID      *OutputBuffer,
  [out, optional] size_t     *Length
);

Parâmetros

[in] Request

Um identificador para um objeto de solicitação de estrutura.

[in] MinimumRequiredLength

O tamanho mínimo do buffer, em bytes, que o driver precisa para processar a solicitação de E/S.

[out] OutputBuffer

Um ponteiro para um local que recebe o endereço do buffer.

[out, optional] Length

Um ponteiro para um local que recebe o tamanho do buffer, em bytes. Esse parâmetro é opcional e pode ser NULL.

Retornar valor

WdfRequestRetrieveUnsafeUserOutputBuffer 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
STATUS_INVALID_PARAMETER
Um parâmetro de entrada é inválido.
STATUS_INVALID_DEVICE_REQUEST
Esse valor será retornado se ocorrer um dos seguintes procedimentos:
STATUS_BUFFER_TOO_SMALL
O parâmetro MinimumRequiredLength especifica um tamanho de buffer maior que o tamanho real do buffer.
 

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

O método WdfRequestRetrieveUnsafeUserOutputBuffer deve ser chamado de uma função de retorno de chamada EvtIoInCallerContext . Depois de chamar WdfRequestRetrieveUnsafeUserOutputBuffer, o driver deve chamar WdfRequestProbeAndLockUserBufferForWrite.

O driver poderá chamar WdfRequestRetrieveUnsafeUserOutputBuffer se o código de controle de E/S de uma solicitação for IRP_MJ_READ ou IRP_MJ_DEVICE_CONTROL.

O driver pode acessar o buffer recuperado até concluir a solicitação de E/S que o parâmetro Request representa.

Para obter mais informações sobre WdfRequestRetrieveUnsafeUserOutputBuffer, consulte Acessando buffers de dados em drivers de Framework-Based.

Exemplos

Para obter um exemplo de código que usa WdfRequestRetrieveUnsafeUserOutputBuffer, consulte WdfRequestProbeAndLockUserBufferForRead.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Cabeçalho wdfrequest.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (consulte Controle de versão da biblioteca de estrutura.)
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWrite(kmdf), DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), OutputBufferAPI(kmdf)

Confira também

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForWrite

WdfRequestRetrieveUnsafeUserInputBuffer