Метод 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 для буферов данных запросов управления устройствами ввода-вывода.
Возвращаемое значение
Никакой
Замечания
Если драйвер вызывает setIoTypePreference для устройства, он должен сделать это из функции обратного вызова IDriverEntry::OnDeviceAdd обратного вызова, прежде чем драйвер вызывает IWDFDriver::CreateDevice.
Если драйвер не вызывает SetIoTypePreference, UMDF задает параметр RetrievalMode для WdfDeviceIoBufferRetrievalCopyImmediately и задает метод доступа буфера для WdfDeviceIoBuffered для запросов управления чтением, записью и устройством.
UMDF может не использовать настройки, заданные драйвером при вызове SetIoTypePreference. Дополнительные сведения о том, как UMDF выбирает режим извлечения и метод доступа к буферу, см. в разделе Указание режима извлечения буфера и способ выбора метода доступа к буферу длязапроса ввода-вывода.
Драйвер не может задать метод доступа к буферу WdfDeviceIoDirect или WdfDeviceIoBufferedOrDirect, если параметр RetrievalModeWdfDeviceIoBufferRetrievalDeferred.
Дополнительные сведения о доступе к буферам данных запроса ввода-вывода см. в доступ к буферам данных в 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 (include Wudfddi.h) |
DLL | WUDFx.dll |
См. также
IWDFIoRequest2::GetEffectiveIoType