Método IWDFIoTarget2::FormatRequestForSetInformation (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. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]

O método FormatRequestForSetInformation formata uma solicitação de E/S para definir informações sobre um arquivo, mas não envia a solicitação para um destino de E/S.

Sintaxe

HRESULT FormatRequestForSetInformation(
  [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 do tipo WDF_FILE_INFORMATION_CLASS que especifica o tipo de informação a ser definido.

[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 entrada, que contém informações de arquivo fornecidas pelo driver especificadas pelo parâmetro InformationClass . Esse parâmetro é opcional e pode ser NULL.

[in, optional] pInformationMemoryOffset

Um ponteiro para uma estrutura de 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 entrada, para a transferência de dados. Se esse ponteiro for NULL, a transferência de dados começará no início do buffer de entrada e o tamanho da transferência será o tamanho do buffer.

Retornar valor

FormatRequestForSetInformation 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 FormatRequestForSetInformation , 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 definida, 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 *pInMemory;
    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 input buffer.
        // 
        hr = pWdfRequest2->RetrieveInputMemory(&pInMemory);
        if (!SUCCEEDED(hr)) goto Error;

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

        //
        // Format a query information request and send it to the I/O target.
        //
        hr = target2->FormatRequestForSetInformation(pRequest,
                                                     infoClass,
                                                     pFile,
                                                     pInMemory,
                                                     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 (inclua Wudfddi.h)
DLL WUDFx.dll

Confira também

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForQueryInformation