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


Метод IWDFDeviceInitialize2::SetIoTypePreference (wudfddi.h)

[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. В UMDF 1 новые функции не добавляются, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с UMDF.]

Метод SetIoTypePreference определяет ваши предпочтения для доступа UMDF и драйвера к буферам данных запросов ввода-вывода устройства.

Синтаксис

void SetIoTypePreference(
  [in] WDF_DEVICE_IO_BUFFER_RETRIEVAL RetrievalMode,
  [in] WDF_DEVICE_IO_TYPE             ReadWritePreference,
  [in] WDF_DEVICE_IO_TYPE             IoControlPreference
);

Параметры

[in] RetrievalMode

WDF_DEVICE_IO_BUFFER_RETRIEVAL типизированное значение, указывающее режим получения буфера, который вы предпочитаете использовать в UMDF, чтобы сделать буферы запроса ввода-вывода доступными для драйвера.

[in] ReadWritePreference

WDF_DEVICE_IO_TYPE типизированное значение, указывающее метод доступа к буферу, который вы предпочитаете использовать в UMDF для буферов данных запросов на чтение и запись.

[in] IoControlPreference

WDF_DEVICE_IO_TYPE типизированное значение, указывающее метод доступа к буферу, который вы предпочитаете использовать в UMDF для буферов данных запросов управления вводом-выводом устройства.

Возвращаемое значение

None

Remarks

Если драйвер вызывает SetIoTypePreference для устройства, он должен сделать это из функции обратного вызова IDriverEntry::OnDeviceAdd , прежде чем драйвер вызовет IWDFDriver::CreateDevice.

Если драйвер не вызывает SetIoTypePreference, UMDF присваивает параметру RetrievalMode значение WdfDeviceIoBufferRetrievalCopyImmediately , а метод доступа к буферу — WdfDeviceIoBuffered для запросов на чтение, запись и управление вводом-выводом устройства.

UMDF может не использовать настройки, заданные драйвером при вызове SetIoTypePreference. Дополнительные сведения о том, как UMDF выбирает режим извлечения и метод доступа к буферу, см. в разделах Указание режима извлечения буфера и Как UMDF выбирает метод доступа к буферу для запроса ввода-вывода.

Драйвер не может задать для метода доступа к буферу значение WdfDeviceIoDirect или WdfDeviceIoBufferedOrDirect , если для параметра RetrievalMode не задано значение WdfDeviceIoBufferRetrievalDeferred.

Дополнительные сведения о доступе к буферам данных запроса ввода-вывода см. в статье Доступ к буферам данных в драйверах UMDF-Based.

Примеры

В следующем примере кода показан сегмент функции обратного вызова IDriverEntry::OnDeviceAdd драйвера. Сегмент получает интерфейс IWDFDeviceInitialize2 , а затем вызывает SetIoTypePreference.

HRESULT
 CMyDriver::OnDeviceAdd(
    __in IWDFDriver *FxWdfDriver,
    __in IWDFDeviceInitialize *FxDeviceInit
    )
{
...
    //
    // Declare an IWDFDeviceInitialize2 interface pointer and obtain the
    // IWDFDeviceInitialize2 interface from the IWDFDeviceInitialize interface.
    //
    CComQIPtr<IWDFDeviceInitialize2> di2 = FxDeviceInit;

    //
    // For this device, set the retrieval mode to deferred, set
    // the access method to buffered for read and write requests,
    // and set the access mode to direct for device I/O control requests.
    // 
    di2->SetIoTypePreference(WdfDeviceIoBufferRetrievalDeferred,
                             WdfDeviceIoBuffered,
                             WdfDeviceIoDirect);
...
}

Требования

Требование Значение
Дата окончания поддержки Недоступно в UMDF 2.0 и более поздних версиях.
Целевая платформа Персональный компьютер
Минимальная версия UMDF 1,9
Верхняя часть wudfddi.h (включая Wudfddi.h)
DLL WUDFx.dll

См. также раздел

IWDFDeviceInitialize2

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL

WDF_DEVICE_IO_TYPE (UMDF)

WdfDeviceInitSetIoType

WdfDeviceInitSetIoTypeEx