Метод 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 |