Метод 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.
Возвращаемое значение
None
Remarks
Драйвер может вызывать Метод 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 (включая Wudfddi.h) |
DLL | WUDFx.dll |