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 ,除非它也會將 擷取Mode 參數設定為 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