在匯流排驅動程式中建立裝置物件
當 每個匯流排驅動程式 發現子裝置已連線到父裝置時,都必須建立架構裝置物件。 父裝置通常是匯流排,但它也可以是多功能裝置,每個函式都需要一組個別的驅動程式 (,例如支援數位音訊和 MIDI) 的音效卡。 匯流排驅動程式所建立的裝置物件稱為實體裝置物件 (PDO) ,因為每個物件都代表子系) 與父 () 之子系) 一個 (硬體的實際連線。
識別和報告連接到匯流排的裝置的程式稱為 匯流排列舉。
如果匯流排驅動程式執行 動態匯流排列舉,其 EvtChildListCreateDevice 回呼函式會收到 WDFDEVICE_INIT 結構的控制碼。
如果匯流排驅動程式執行 靜態匯流排列舉,則必須呼叫 WdfPdoInitAllocate ,以取得WDFDEVICE_INIT結構的控制碼。
如需匯流排列舉的詳細資訊,請參閱 列舉匯流排上的裝置。
匯流排驅動程式可以呼叫一組 架構裝置物件初始化方法,以將資訊儲存在 WDFDEVICE_INIT 結構中。 此外,匯流排驅動程式可以呼叫 架構 PDO 初始化方法。
建立列舉子裝置的架構裝置物件通常包含下列步驟:
註冊匯流排驅動程式特定的回呼函式。
大部分匯流排驅動程式都會呼叫 WdfPdoInitSetEventCallbacks,因為它們必須指定裝置所需的系統硬體資源。 如需指定硬體資源的詳細資訊,請參閱 Framework-Based驅動程式的硬體資源。 如果裝置和驅動程式支援退出,則可以註冊其他回呼函式。
報告 裝置識別碼字串。
匯流排驅動程式必須針對裝置支援的每個字串類型呼叫WdfPdoInitAssignDeviceID、WdfPdoInstanceID、WdfPdoInitAddCompatibleID 和 WdfPdoInitAddHardwareID來報告裝置的識別碼字串。 此外,使用 1.9 版或更新版本的架構匯流排驅動程式可以呼叫 WdfPdoInitAssignContainerID。
報告匯流排驅動程式是否可以在原始模式中支援裝置。
如果匯流排驅動程式支援裝置的原始模式,則必須呼叫 WdfPdoInitAssignRawDevice。
提供描述裝置的可顯示文字。
匯流排驅動程式會呼叫 WdfPdoInitAddDeviceText 和 WdfPdoInitSetDefaultLocale ,以多種語言向使用者提供描述裝置的文字。
建立裝置物件。
建立裝置物件的最後一個步驟是呼叫 WdfDeviceCreate。
如果驅動程式在初始化它從 WdfPdoInitAllocate取得的WDFDEVICE_INIT結構時發生錯誤,驅動程式必須呼叫 WdfDeviceInitFree ,而不是 WdfDeviceCreate。
在匯流排驅動程式建立裝置物件之後,通常會呼叫WdfDeviceSetPnpCapabilities和WdfDeviceSetPowerCapabilities來報告裝置的隨插即用和電源功能。
每個匯流排驅動程式也是匯流排配接器的函式驅動程式。 因此,驅動程式也必須提供 EvtDriverDeviceAdd 回呼函式。 此回呼函式會為系統上的每個匯流排介面卡建立功能裝置物件 (FDO) 。 如需建立 FDO 的詳細資訊,請參閱 在函式驅動程式中建立裝置物件。