Метод IWDFIoRequest2::GetSetInformationParameters (wudfddi.h)
[ предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе Начало работы с UMDF.]
Метод GetSetInformationParameters извлекает параметры, связанные с запросом WdfRequestSetInformationтипа ввода-вывода.
Синтаксис
void GetSetInformationParameters(
[out, optional] WDF_FILE_INFORMATION_CLASS *pInformationClass,
[out, optional] SIZE_T *pSizeInBytes
);
Параметры
[out, optional] pInformationClass
Указатель на выделенную драйвером переменную, которая получает WDF_FILE_INFORMATION_CLASSтипизированное значение. Этот указатель необязателен и может быть null.
[out, optional] pSizeInBytes
Указатель на выделенную драйвером переменную, которая получает размер в байтах сведений о файле. Этот указатель необязателен и может быть null.
Возвращаемое значение
Никакой
Замечания
Драйвер может вызывать GetSetInformationParameters для получения параметров, связанных с запросом ввода-вывода, если тип запроса WdfRequestSetInformation. Параметр pInformationClass определяет тип сведений о файле, которые должен задать драйвер, а параметр pSizeInBytes указывает размер буфера, содержащего сведения. Драйвер может вызывать IWDFIoRequest2::RetrieveInputBuffer для получения буферного адреса.
Драйвер должен убедиться, что указанный размер буфера достаточно велик, чтобы содержать сведения о файле, которые должен задать драйвер.
Примеры
Следующий пример кода является частью функции обратного вызова 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->GetSetInformationParameters(&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 input buffer.
//
hr = r2->RetrieveInputBuffer(sizeof(FILE_BASIC_INFORMATION),
(PVOID*) &buffer,
&bufferCb);
if (SUCCEEDED(hr))
{
//
// Copy file information from input buffer.
//
CopyMemory(&g_FileInfo,
buffer,
sizeof(FILE_BASIC_INFORMATION));
}
...
}
...
exit:
...
}
Требования
Требование | Ценность |
---|---|
завершение поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
целевая платформа | Настольный |
минимальная версия UMDF | 1.9 |
заголовка | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |