IWDFDeviceInitialize2::SetIoTypePreference 方法 (wudfddi.h)
[警告: UMDF 2 是最新版本的 UMDF,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 未向 UMDF 1 添加新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅使用 UMDF 入门。]
SetIoTypePreference 方法指定 UMDF 和驱动程序如何访问设备 I/O 请求的数据缓冲区的首选项。
语法
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 用于使 I/O 请求的缓冲区可供驱动程序使用的缓冲区检索模式。
[in] ReadWritePreference
一个WDF_DEVICE_IO_TYPE类型的值,该值指定你希望 UMDF 用于读取和写入请求的数据缓冲区的缓冲区访问方法。
[in] IoControlPreference
一个 WDF_DEVICE_IO_TYPE 类型的值,该值指定你希望 UMDF 用于设备 I/O 控制请求的数据缓冲区的缓冲区访问方法。
返回值
无
备注
如果驱动程序为设备调用 SetIoTypePreference ,则必须从其 IDriverEntry::OnDeviceAdd 回调函数执行此操作,然后驱动程序调用 IWDFDriver::CreateDevice。
如果驱动程序不调用 SetIoTypePreference,UMDF 会将 RetrieveMode 参数设置为 WdfDeviceIoBufferRetrievalCopyImmediately ,并将缓冲区访问方法设置为 WdfDeviceIoBuffered 以进行读取、写入和设备 I/O 控制请求。
UMDF 可能不会使用驱动程序在调用 SetIoTypePreference 时指定的首选项。 有关 UMDF 如何选择检索模式和缓冲区访问方法的详细信息,请参阅 指定缓冲区检索模式 和 UMDF 如何为 I/O 请求选择缓冲区访问方法。
驱动程序无法将缓冲区访问方法设置为 WdfDeviceIoDirect 或 WdfDeviceIoBufferedOrDirect ,除非它还将 RetrievalMode 参数设置为 WdfDeviceIoBufferRetrievalDeferred。
有关访问 I/O 请求的数据缓冲区的详细信息,请参阅 访问 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 |
另请参阅
IWDFIoRequest2::GetEffectiveIoType