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