Compartilhar via


Método IWDFIoRequest2::RetrieveInputBuffer (wudfddi.h)

[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum recurso novo está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução aoda UMDF .]

O método RequestRetrieveInputBuffer recupera o buffer de entrada de uma solicitação de E/S.

Sintaxe

HRESULT RetrieveInputBuffer(
  [in]            SIZE_T MinimumRequiredCb,
  [out]           PVOID  *Buffer,
  [out, optional] SIZE_T *BufferCb
);

Parâmetros

[in] MinimumRequiredCb

O tamanho mínimo do buffer, em bytes, que o driver precisa para processar a solicitação de E/S. Esse valor poderá ser zero se não houver tamanho mínimo de buffer.

[out] Buffer

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

[out, optional] BufferCb

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

Valor de retorno

RequestRetrieveInputBuffer retornará S_OK se a operação for bem-sucedida. Caso contrário, esse método poderá retornar o seguinte valor:

Código de retorno Descrição
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
A solicitação de E/S não forneceu um buffer de entrada ou o tamanho do buffer de entrada é menor que o tamanho mínimo especificado MinimumRequiredCb.
E_OUTOFMEMORY
Não há memória suficiente disponível para recuperar o buffer. O driver deve concluir a solicitação com um valor de status de erro.
 

Esse método pode retornar um dos outros valores que Winerror.h contém.

Observações

O buffer de entrada de uma solicitação contém informações, como dados a serem gravados em um disco, que o originador da solicitação forneceu. O driver pode chamar RequestRetrieveInputBuffer para obter o buffer de entrada para uma solicitação de gravação ou uma solicitação de controle de E/S do dispositivo, mas não para uma solicitação de leitura (porque as solicitações de leitura não fornecem dados de entrada).

O método RequestRetrieveInputBuffer recupera o buffer de entrada para solicitações de E/S que usam o de E/S em buffer ou método direto de E/S para acessar buffers de dados.

Se RequestRetrieveInputBuffer retornar S_OK, o driver receberá o endereço e, opcionalmente, o tamanho do buffer de entrada.

O driver pode acessar o buffer recuperado até que concluído solicitação de E/S.

Em vez de chamar RequestRetrieveInputBuffer, o driver pode chamar IWDFIoRequest2::RetrieveInputMemory, que cria um objeto de memória de estrutura que representa o buffer.

Para obter mais informações sobre como acessar os buffers de dados de uma solicitação de E/S, consulte Acessando buffers de dados em UMDF-Based Drivers.

Exemplos

O exemplo de código a seguir mostra um segmento do de um driver de porta serial IQueueCallbackDeviceIoControl::OnDeviceIoControl função de retorno de chamada. No buffer de entrada de uma solicitação de E/S, o segmento de código obtém a taxa de baud que deve ser definida para o dispositivo.

VOID
STDMETHODCALLTYPE
  CMyQueue::OnDeviceIoControl(
    __in IWDFIoQueue*  FxQueue,
    __in IWDFIoRequest*  FxRequest,
    __in ULONG  ControlCode,
    __in SIZE_T  InputBufferCb,
    __in SIZE_T  OutputBufferCb
    )
{
    PBYTE buffer;
    SIZE_T bufferSize;
    HRESULT hr;
    //
    // Declare an IWDFIoRequest2 interface pointer and obtain the
    // IWDFIoRequest2 interface from the IWDFIoRequest interface.
    //
    CComQIPtr<IWDFIoRequest2> r2 = FxRequest;

    switch (ControlCode)
    {
        case IOCTL_SERIAL_SET_BAUD_RATE: 
        {
            //
            // Obtain the baud rate from the write request's input buffer.
            //
            hr = r2->RetrieveInputBuffer(sizeof(SERIAL_BAUD_RATE),
                                         (PVOID*) &buffer, 
                                         &bufferSize);
...
        }
    }
}

Requisitos

Requisito Valor
fim do suporte Indisponível no UMDF 2.0 e posterior.
da Plataforma de Destino Área de trabalho
versão mínima do UMDF 1.9
cabeçalho wudfddi.h (inclua Wudfddi.h)
de DLL WUDFx.dll

Consulte também

IWDFIoRequest2

IWDFIoRequest2::RetrieveInputMemory

IWDFIoRequest2::RetrieveOutputBuffer

IWDFIoRequest2::RetrieveOutputMemory

IWDFIoRequest::GetInputMemory

IWDFIoRequest::GetOutputMemory