容器標識碼如何從卸除式裝置功能產生
如果總線驅動程式無法為裝置節點提供容器標識符, (devnode) 所列舉,則 隨插即用 (PnP) 管理員會使用卸除式裝置功能,為所有為裝置列舉的 devnode 產生容器標識符。 如需可移動裝置功能的詳細資訊,請參閱 卸除式裝置功能概觀。
下列啟發學習法說明如何從卸載式裝置功能產生容器標識碼:
如果 devnode 的卸載式裝置功能設定為 TRUE,請為 devnode 產生新的容器識別碼。
如果 devnode 的卸載式裝置功能設定為 FALSE,請從其父 devnode 繼承容器標識碼。
devnode 無法列舉子開發節點,直到初始化並啟動其 驅動程式堆棧 為止。 一旦在初始化期間指派其容器標識碼,devnode 就可以在列舉容器標識符時,將其容器標識碼傳播到其任何非卸載式子系。
將卸載式裝置功能設定為 TRUE 的 devnode 會被視為裝置的最上層 (父) devnode,而且會產生此 devnode 的容器識別符。
除非其本身已將其卸除式裝置功能設定為 TRUE,否則此父 devnode 的所有子系都會繼承相同的容器標識符。 在此情況下,卸除式子開發節點會指派不同的容器標識碼,並成為這個卸載式裝置的父開發節點。 該 devnode 的所有子系都會繼承相同的容器標識碼。
例如,假設單一函式滑鼠是透過USB連線到電腦。 在此情況下,USB 總線驅動程式會偵測新的裝置,並偵測它是USB人為介面裝置, (HID) 。 USB 總線驅動程式接著會為裝置建立 USB HID 開發節點。 HID devnode 也會偵測 HID 裝置是滑鼠,並針對符合 HID 規範的滑鼠建立子開發節點
將此啟發學習法套用至此範例會導致下列動作:
系統會建立 USB HID devnode。 卸除式裝置功能在此 devnode 上設定為 TRUE ,因為其父 USB 中樞 devnode 辨識它已插入外部面向 USB 埠。
建立此 devnode 的容器標識碼,因為它是卸載式裝置的最上層 devnode。 因此,此 devnode 會被視為卸載式裝置的父開發節點。
系統會建立符合 HID 規範的滑鼠 devnode。 卸除式裝置功能在此 devnode 上設定為 FALSE ,因為其父 USB HID devnode 會將其所有子系報告為不可移動。 在此情況下,HID 相容的滑鼠 devnode 會繼承父 devnode 的容器識別碼。
透過這個啟發學習法,會將相同的容器標識符指派給屬於滑鼠的每個 devnode。 即使裝置沒有唯一標識碼,PnP 管理員也已成功將開發節點分組到邏輯裝置。
注意
此啟發學習法的成功取決於特定總線驅動程式,該驅動程式會正確報告其列舉之每個 devnode 的卸除式裝置功能。 總線驅動程式必須確定裝置的父開發節點應該設定為可移動,而且其子開發節點不應設定為可移動節點。