Метод IWDFIoTarget2::FormatRequestForSetInformation (wudfddi.h)
[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с помощью UMDF.]
Метод FormatRequestForSetInformation форматирует запрос ввода-вывода для задания сведений о файле, но не отправляет запрос в целевой объект ввода-вывода.
Синтаксис
HRESULT FormatRequestForSetInformation(
[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, передача данных начинается в начале входного буфера, а размер передачи равен размеру буфера.
Возвращаемое значение
FormatRequestForSetInformation возвращает S_OK, если операция выполнена успешно. В противном случае метод может вернуть следующее значение:
Код возврата | Описание |
---|---|
|
Платформе не удалось выделить память. |
Этот метод может возвращать одно из других значений, содержащихся в Winerror.h.
Комментарии
Используйте метод FormatRequestForSetInformation , за которым следует метод IWDFIoRequest::Send , чтобы отправлять запросы синхронно или асинхронно к целевому объекту ввода-вывода.
Примеры
Следующий пример кода является частью функции обратного вызова IQueueCallbackDefaultIoHandler::OnDefaultIoHandler . Если функция обратного вызова получает запрос на сведения о наборе, она отправляет запрос в целевой объект ввода-вывода устройства по умолчанию.
void
CMyQueue::OnDefaultIoHandler(
IWDFIoQueue* pQueue,
IWDFIoRequest* pRequest
)
{
HRESULT hr;
IWDFDevice *pDevice;
IWDFIoTarget *pTarget;
IWDFFile *pFile;
IWDFMemory *pInMemory;
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 input buffer.
//
hr = pWdfRequest2->RetrieveInputMemory(&pInMemory);
if (!SUCCEEDED(hr)) goto Error;
//
// Get the I/O request's parameters.
//
hr = pWdfRequest2->GetSetInformationParameters(&infoClass,
NULL);
if (!SUCCEEDED(hr)) goto Error;
//
// Format a query information request and send it to the I/O target.
//
hr = target2->FormatRequestForSetInformation(pRequest,
infoClass,
pFile,
pInMemory,
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 |