在 UMDF 中初始化一般 I/O 目標
警告
UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 來撰寫。 未將新功能新增至 UMDF 1,而且較新版本的 Windows 10 上不支援 UMDF 1。 通用 Windows 驅動程式必須使用 UMDF 2。
封存的 UMDF 1 範例可在Windows 11 22H2 版 - 2022 年 5 月驅動程式範例更新中找到。
如需詳細資訊,請參閱使用 UMDF 消費者入門。
驅動程式用來初始化一般 I/O 目標的步驟取決於 I/O 目標是 本機 還是遠端。
初始化本機 I/O 目標
本機 I/O 目標包括裝置 的預設 I/O 目標和 檔案控制碼型 I/O 目標。
當驅動程式呼叫 IWDFDriver::CreateDevice 方法時,架構會初始化裝置的驅動程式預設 I/O 目標。 若要擷取 IWDFIoTarget 介面,讓驅動程式能夠存取裝置的預設 I/O 目標,驅動程式會呼叫 IWDFDevice::GetDefaultIoTarget 方法。
大部分驅動程式只會將要求傳送至其預設 I/O 目標。
如果 UMDF 驅動程式必須將 I/O 要求傳送至控制碼型介面,例如網路介面,驅動程式必須建立檔案控制碼型 I/O 目標物件。 若要建立檔案控制碼型 I/O 目標物件,驅動程式必須執行下列動作:
呼叫裝置IWDFDevice介面的QueryInterface方法,以擷取IWDFFileHandleTargetFactory介面的指標。
呼叫 Win32 CreateFile、 CreateNamedPipe或 socket 函式,以取得檔案、具名管道或 通訊端的 Win32 控制碼。
呼叫 IWDFFileHandleTargetFactory::CreateFileHandleTarget 方法,以建立檔案、管道或通訊端的檔案控制碼型 I/O 目標物件。
如需示範如何擷取 IWDFFileHandleTargetFactory 介面、取得 Win32 控制碼,以及建立以檔案控制碼為基礎的 I/O 目標物件的程式碼範例,請參閱 IWDFFileHandleTargetFactory::CreateFileHandleTarget中的程式碼範例。
驅動程式建立檔案控制碼型 I/O 目標之後,驅動程式可以將 I/O 要求傳送至 I/O 目標。
初始化遠端 I/O 目標
在驅動程式可以使用遠端 I/O 目標之前,它必須先建立遠端目標物件並開啟目標,如下所示:
呼叫 IWDFDevice2::CreateRemoteTarget 來建立遠端目標物件。
呼叫 IWDFRemoteTarget::OpenFileByName (檔案) 或 IWDFRemoteTarget::OpenRemoteInterface (,讓 裝置介面) 開啟 I/O 作業的目標。