Поделиться через


Метод 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, если операция завершится успешно. В противном случае метод может вернуть одно из следующих значений:

Возвращаемый код Описание
E_OUTOFMEMORY
Платформа не смогла выделить память.
 

Этот метод может возвращать одно из других значений, содержащихся в 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

См. также

IQueueCallbackDefaultIoHandler::OnDefaultIoHandler

IWDFIoRequest::Send

IWDFIoTarget2