Compartilhar via


Método IWDFIoTarget2::FormatRequestForQueryInformation (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 FormatRequestForQueryInformation formata uma solicitação de E/S para obter informações sobre um arquivo, mas não envia a solicitação para um destino de E/S.

Sintaxe

HRESULT FormatRequestForQueryInformation(
  [in]           IWDFIoRequest              *pRequest,
  [in]           WDF_FILE_INFORMATION_CLASS InformationClass,
  [in, optional] IWDFFile                   *pFile,
  [in, optional] IWDFMemory                 *pInformationMemory,
  [in, optional] PWDFMEMORY_OFFSET          pInformationMemoryOffset
);

Parâmetros

[in] pRequest

Um ponteiro para a interface IWDFIoRequest do objeto de solicitação que representa a solicitação de E/S.

[in] InformationClass

Um valor WDF_FILE_INFORMATION_CLASSdigitado que especifica o tipo de informação a ser obtida.

[in, optional] pFile

Um ponteiro para a interface IWDFFile do objeto de arquivo associado à solicitação de E/S. Esse parâmetro é necessário para destinos locais e remotos de E/Se é opcional (pode ser NULL) para destinos de E/S de identificador de arquivo.

[in, optional] pInformationMemory

Um ponteiro para a interface IWDFMemory de um objeto de memória. Esse objeto representa o buffer de saída, que recebe as informações de arquivo que o parâmetro InformationClass especifica. Esse parâmetro é opcional e pode ser NULL.

[in, optional] pInformationMemoryOffset

Um ponteiro para uma estrutura WDFMEMORY_OFFSET que fornece valores opcionais de deslocamento e comprimento de bytes. A estrutura usa esses valores para determinar o endereço e o comprimento inicialmente, dentro do buffer de saída, para a transferência de dados. Se esse ponteiro for NULL, a transferência de dados começará no início do buffer de saída e o tamanho da transferência será o tamanho do buffer.

Valor de retorno

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

Código de retorno Descrição
E_OUTOFMEMORY
A estrutura não pôde alocar memória.
 

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

Observações

Use o método FormatRequestForQueryInformation, seguido pelo método IWDFIoRequest::Send, para enviar solicitações de forma síncrona ou assíncrona para um de destino de E/S de.

Exemplos

O exemplo de código a seguir faz parte de uma função de retorno de chamada IQueueCallbackDefaultIoHandler::OnDefaultIoHandler. Se a função de retorno de chamada receber uma solicitação de informações de consulta, ela enviará a solicitação para o destino de E/S padrão do dispositivo.

void
CMyQueue::OnDefaultIoHandler(
 IWDFIoQueue*  pQueue,
 IWDFIoRequest*  pRequest
    )
{
    HRESULT hr;
    IWDFDevice *pDevice;
    IWDFIoTarget *pTarget;
    IWDFFile *pFile;
    IWDFMemory *pOutMemory;
    WDF_FILE_INFORMATION_CLASS infoClass;

    //
    // Obtain the device, default I/O target, and file object.
    //
    pQueue->GetDevice(&pDevice);
    pDevice->GetDefaultIoTarget(&pTarget);
    pRequest->GetFileObject(&pFile);

    if (WdfRequestQueryInformation==pRequest->GetType())
    {
        //
        // Declare an IWDFIoRequest2 interface pointer and obtain the
        // IWDFIoRequest2 interface from the IWDFIoRequest interface.
        //
        CComQIPtr<IWDFIoRequest2> r2 = pRequest;

        // 
        // Declare an IWDFIoTarget2 interface pointer and obtain the
        // IWDFIoTarget2 interface from the IWDFIoTarget interface.
        //
        CComQIPtr<IWDFIoTarget2> target2(pTarget);

        // 
        // Get the I/O request's output buffer.
        // 
        hr = pWdfRequest2->RetrieveOutputMemory(&pOutMemory);
        if (!SUCCEEDED(hr)) goto Error;

        // 
        // Get the I/O request's parameters.
        // 
        hr = pWdfRequest2->GetQueryInformationParameters(&infoClass,
                                                         NULL);
        if (!SUCCEEDED(hr)) goto Error;

        //
        // Format a query information request and send it to the I/O target.
        //
        hr = target2->FormatRequestForQueryInformation(pRequest,
                                                       infoClass,
                                                       pFile,
                                                       pOutMemory,
                                                       NULL);
        if (!SUCCEEDED(hr)) goto Error;
        hr = pRequest->Send(pTarget,
                            WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
                            0);
    }
...
Error;
    //
    // Release objects.
    //
    SAFE_RELEASE(pDevice);
    SAFE_RELEASE(pTarget);
    SAFE_RELEASE(pFile);
    SAFE_RELEASE(pOutMemory);
}

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

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForSetInformation