Поделиться через


Метод IWDFIoTarget2::FormatRequestForQueryInformation (wudfddi.h)

[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с помощью UMDF.]

Метод FormatRequestForQueryInformation форматирует запрос ввода-вывода для получения сведений о файле, но не отправляет его целевому объекту ввода-вывода.

Синтаксис

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

Параметры

[in] pRequest

Указатель на интерфейс IWDFIoRequest объекта запроса, который представляет запрос ввода-вывода.

[in] InformationClass

WDF_FILE_INFORMATION_CLASS типизированное значение, указывающее тип получаемых сведений.

[in, optional] pFile

Указатель на интерфейс IWDFFile объекта файла, связанного с запросом ввода-вывода. Этот параметр является обязательным для локальных и удаленных целевых объектов ввода-вывода и является необязательным (может иметь значение NULL) для целевых объектов ввода-вывода для обработки файлов.

[in, optional] pInformationMemory

Указатель на интерфейс IWDFMemory объекта памяти. Этот объект представляет выходной буфер, который получает сведения о файле, указанные параметром InformationClass . Этот параметр является необязательным и может иметь значение NULL.

[in, optional] pInformationMemoryOffset

Указатель на структуру WDFMEMORY_OFFSET , которая предоставляет необязательные значения смещения и длины байтов. Платформа использует эти значения для определения начального адреса и длины в выходном буфере для передачи данных. Если этот указатель имеет значение NULL, передача данных начинается в начале выходного буфера, а размер передачи равен размеру буфера.

Возвращаемое значение

FormatRequestForQueryInformation возвращает S_OK, если операция выполнена успешно. В противном случае метод может вернуть следующее значение:

Код возврата Описание
E_OUTOFMEMORY
Платформе не удалось выделить память.
 

Этот метод может возвращать одно из других значений, содержащихся в Winerror.h.

Комментарии

Используйте метод FormatRequestForQueryInformation , за которым следует метод IWDFIoRequest::Send , чтобы отправлять запросы синхронно или асинхронно в целевой объект ввода-вывода.

Примеры

Следующий пример кода является частью функции обратного вызова IQueueCallbackDefaultIoHandler::OnDefaultIoHandler . Если функция обратного вызова получает запрос сведений о запросе, она отправляет запрос в целевой объект ввода-вывода устройства по умолчанию.

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);
}

Требования

Требование Значение
Дата окончания поддержки Недоступно в UMDF 2.0 и более поздних версиях.
Целевая платформа Персональный компьютер
Минимальная версия UMDF 1,9
Верхняя часть wudfddi.h (включая Wudfddi.h)
DLL WUDFx.dll

См. также раздел

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForSetInformation