Função WdfRequestRetrieveUnsafeUserInputBuffer (wdfrequest.h)

[Aplica-se somente ao KMDF]

O método WdfRequestRetrieveUnsafeUserInputBuffer recupera o buffer de entrada 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 WdfRequestRetrieveUnsafeUserInputBuffer(
  [in]            WDFREQUEST Request,
  [in]            size_t     MinimumRequiredLength,
  [out]           PVOID      *InputBuffer,
  [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] InputBuffer

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

WdfRequestRetrieveUnsafeUserInputBuffer 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 de entrada é inválido.
STATUS_INVALID_DEVICE_REQUEST
Esse valor será retornado se ocorrer um destes 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 WdfRequestRetrieveUnsafeUserInputBuffer deve ser chamado de uma função de retorno de chamada EvtIoInCallerContext . Depois de chamar WdfRequestRetrieveUnsafeUserInputBuffer, o driver deve chamar WdfRequestProbeAndLockUserBufferForRead.

O driver pode chamar WdfRequestRetrieveUnsafeUserInputBuffer se o código de controle de E/S de uma solicitação for IRP_MJ_WRITE 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 WdfRequestRetrieveUnsafeUserInputBuffer, consulte Acessando buffers de dados em drivers de Framework-Based.

Exemplos

Para obter um exemplo de código que usa WdfRequestRetrieveUnsafeUserInputBuffer, 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 de DDI BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedWrite(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), InputBufferAPI(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Confira também

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForRead

WdfRequestRetrieveUnsafeUserOutputBuffer