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


Метод IWDFIoRequest2::GetQueryInformationParameters (wudfddi.h)

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

Метод GetQueryInformationParameters извлекает параметры, связанные с запросом ввода-вывода типа WdfRequestQueryInformation.

Синтаксис

void GetQueryInformationParameters(
  [out, optional] WDF_FILE_INFORMATION_CLASS *pInformationClass,
  [out, optional] SIZE_T                     *pSizeInBytes
);

Параметры

[out, optional] pInformationClass

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

[out, optional] pSizeInBytes

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

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

None

Remarks

Драйвер может вызвать GetQueryInformationParameters для получения параметров, связанных с запросом ввода-вывода, если тип запроса — WdfRequestQueryInformation. Параметр pInformationClass определяет тип сведений о файлах, которые должен предоставить драйвер, а параметр pSizeInBytes задает размер буфера, который будет получать сведения. Драйвер может вызвать IWDFIoRequest2::RetrieveOutputBuffer для получения адреса буфера.

Драйвер должен убедиться, что указанный размер буфера достаточно велик для получения запрошенных сведений о файле.

Примеры

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

void
CMyQueue::OnDefaultIoHandler(
    IWDFIoQueue*  pQueue,
    IWDFIoRequest*  pRequest
    )
{
    HRESULT hr;
    WDF_FILE_INFORMATION_CLASS infoClass;
    SIZE_T bufSize;
    PFILE_BASIC_INFORMATION buffer;

 if (WdfRequestQueryInformation==pRequest->GetType())
    {
        //
        // Declare an IWDFIoRequest2 interface pointer and obtain the
        // IWDFIoRequest2 interface from the IWDFIoRequest interface.
        //
        CComQIPtr<IWDFIoRequest2> r2 = pRequest;
        // 
        // Get the I/O request's parameters.
        // 
        r2->GetQueryInformationParameters(&infoClass,
                                          &bufSize);
        // 
        // This driver supports only FileBasicInformation.
        // 
        if (infoClass != FileBasicInformation)
        {
            hr = HRESULT_FROM_NT(STATUS_NOT_SUPPORTED);
            goto exit;
        }
        // 
        // Validate buffer size.
        // 
        if (bufferCb != sizeof(FILE_BASIC_INFORMATION))
        {
            hr = HRESULT_FROM_NT(STATUS_BUFFER_TOO_SMALL);
            goto exit;
        }
        // 
        // Get output buffer.
        // 
        hr = r2->RetrieveOutputBuffer(sizeof(FILE_BASIC_INFORMATION), 
                                      (PVOID*) &buffer,
                                      &bufferCb);
        if (SUCCEEDED(hr))
        {
            // 
            // Copy file information to output buffer.
            // 
            CopyMemory(buffer,
                       &g_FileInfo,
                       sizeof(FILE_BASIC_INFORMATION));
            r2->SetInformation(sizeof(FILE_BASIC_INFORMATION));
        }
 ...
    }
...
exit:
...
}

Требования

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

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

IWDFIoRequest2

IWDFIoRequest2::GetSetInformationParameters