Метод IWDFIoTarget2::FormatRequestForFlush (wudfddi.h)
[ предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе Начало работы с UMDF.]
Метод FormatRequestForFlush создает запрос ввода-вывода для операции очистки, но не отправляет запрос на целевой объект ввода-вывода.
Синтаксис
HRESULT FormatRequestForFlush(
[in] IWDFIoRequest *pRequest,
[in, optional] IWDFFile *pFile
);
Параметры
[in] pRequest
Указатель на интерфейс IWDFIoRequest объекта запроса, представляющего запрос ввода-вывода.
[in, optional] pFile
Указатель на интерфейс IWDFFile объекта файла, связанного с запросом ввода-вывода. Этот параметр является необязательным и может быть null, но он необходим для целевого объекта ввода-вывода по умолчанию.
Возвращаемое значение
FormatRequestForFlush возвращает S_OK, если операция завершится успешно. В противном случае метод может вернуть одно из следующих значений:
Возвращаемый код | Описание |
---|---|
|
Платформа не смогла выделить память. |
Этот метод может возвращать одно из других значений, содержащихся в Winerror.h.
Замечания
Некоторые драйверы должны сбрасывать кэшированные буферы, которые существуют либо в более низком драйвере, либо на устройстве. Например, драйверы, существующие в стеке драйверов для последовательного устройства или устройства хранилища, могут поддерживать эту операцию.
Используйте метод FormatRequestForFlush, за которым следует метод IWDFIoRequest::Send, чтобы отправлять запросы на очистку синхронно или асинхронно.
Примеры
Следующий пример кода является частью функции обратного вызова IQueueCallbackDefaultIoHandler::OnDefaultIoHandler обратного вызова. Если функция обратного вызова получает запрос на очистку, он отправляет запрос на целевой объект ввода-вывода устройства по умолчанию.
void
CMyQueue::OnDefaultIoHandler(
IWDFIoQueue* pQueue,
IWDFIoRequest* pRequest
)
{
HRESULT hr;
IWDFDevice *pDevice;
IWDFIoTarget *pTarget;
IWDFFile *pFile;
//
// Obtain the device, default I/O target, and file object.
//
pQueue->GetDevice(&pDevice);
pDevice->GetDefaultIoTarget(&pTarget);
pRequest->GetFileObject(&pFile);
if (WdfRequestFlushBuffers==pRequest->GetType())
{
//
// Declare an IWDFIoTarget2 interface pointer and obtain the
// IWDFIoTarget2 interface from the IWDFIoTarget interface.
//
CComQIPtr<IWDFIoTarget2> target2(pTarget);
//
// Format a flush request and send it to the I/O target.
//
hr = target2->FormatRequestForFlush(pRequest,
pFile);
if (SUCCEEDED(hr))
{
hr = pRequest->Send(pTarget,
WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
0);
}
}
...
//
// Release objects.
//
SAFE_RELEASE(pDevice);
SAFE_RELEASE(pTarget);
SAFE_RELEASE(pFile);
}
Требования
Требование | Ценность |
---|---|
завершение поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
целевая платформа | Настольный |
минимальная версия UMDF | 1.9 |
заголовка | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |