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