Compartilhar via


Método IWDFIoTarget2::FormatRequestForQueryInformation (wudfddi.h)

[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Drivers universais do Windows devem usar UMDF 2. Para obter mais informações, consulte Introdução com 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 de tipo WDF_FILE_INFORMATION_CLASS que especifica o tipo de informação a ser obtido.

[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 de E/S locais e remotos e é opcional (pode ser NULL) para destinos de E/S do 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 especificadas pelo parâmetro InformationClass . 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 inicial e o comprimento, 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.

Retornar valor

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.

Comentários

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

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.
Plataforma de Destino Área de Trabalho
Versão mínima do UMDF 1,9
Cabeçalho wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Confira também

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForSetInformation