共用方式為


USB 裝置如何指派容器識別碼

對於透過通用序列匯流排 (USB) 連線到電腦的裝置,下列流程圖顯示用來將容器識別碼指派給 USB 裝置節點的啟發學習法, (devnode) 。

說明 usb devnodes 容器識別碼啟發學習法的流程圖。

此啟發學習法會使用來自數個來源的資訊來判斷下列其中一個是否與 USB 開發節點有關:

  • devnode 是否代表 USB 匯流排上的新裝置? 如果這是 true,則 devnode 會收到新的容器識別碼。

  • devnode 是否為現有裝置的子開發節點? 如果這是 true,devnode 會繼承父 devnode 的容器識別碼。

USB 裝置的容器識別碼是以數種方式產生。 此決策是以裝置中包含的資訊為基礎。 此資訊是從 ACPI 設定、USB 匯流排驅動程式和 USB 中樞擷取。

此啟發學習法會遵循每個開發節點的步驟,隨插即用 (PnP) 管理員在 USB 匯流排上列舉。

  1. 由 USB 匯流排驅動程式查詢時,USB 裝置可以透過 Microsoft 作業系統 (OS) ContainerID 描述元來報告容器識別碼。

    從 Windows 7 開始,作業系統支援 Microsoft OS ContainerID 描述元。 透過此描述項,獨立硬體廠商 (IHV) 可以精確地指定裝置的容器識別碼。 因此,裝置的容器識別碼是唯一的,而且不會在裝置安裝所在的每部電腦上變更。 此外,如果報告 Microsoft OS ContainerID 描述元,裝置會向作業系統指出所有列舉的 devnode 都是相同實體裝置的一部分。

    Microsoft OS ContainerID 描述元旨在用於支援透過多個系統匯流排同時連線裝置的裝置。 例如,印表機可以使用 隨插即用 Extensions (PnP-X) 來支援同時的 USB 和 IP 網路連線。 藉由使用單一 Microsoft OS ContainerID 描述元,這兩個傳輸都會報告相同的容器識別碼。 因此,PnP 管理員會判斷每個匯流排所列舉的 devnode 是相同實體裝置的一部分。

    如需 Microsoft OS ContainerID 描述元的詳細資訊,請參閱 Microsoft OS 描述元

  2. 如果 USB 裝置未報告 Microsoft OS ContainerID 描述元,USB 中樞驅動程式會查詢 ACPI,以判斷裝置是否連接至外部對向埠。

    作業系統會嘗試找出 ACPI 位址 (_ADR) 物件,該物件符合裝置所連線之 USB 埠的位址。 如果找到相符的位址物件,作業系統會執行下列步驟:

    • 系統會查詢 (_UPC) 物件的 USB 埠功能,並檢查 PortIsConnectable 值。 如果 PortIsConnectable 具有非零值0xFF,則可以使用埠來連線外部裝置。 因此,連線到此埠的任何裝置都必須是電腦外部。

    • 如果電腦實作 ACPI 3.0 且 PortIsConnectable 位元組為非零,作業系統會額外查詢實體位置描述 (_PLD) 物件。 作業系統會檢查 _PLD物件上是否已設定UserVisible位 (位 64) 。 這會做為額外的檢查,以確保埠同時可供使用者連線且外部可見。

    如果從 ACPI 收集的資訊指出裝置是外部的,PnP 管理員會產生裝置的容器識別碼。 ContainedID值是裝置 USB 序號或隨機產生的值雜湊。 devnode 會指派此容器識別碼。

    注意 如果作業系統判斷裝置在電腦內部,devnode 會繼承父 devnode 的容器識別碼,在此情況下 () 電腦本身的容器識別碼。

  3. 如果 ACPI 未傳回符合裝置所連線 USB 埠位址的 _ADR 物件,PnP 管理員會根據 devnode 的卸載狀態產生容器識別碼。

    USB 中樞驅動程式會從中樞查詢 USB RemoveAndPowerMask 描述元,並檢查 DeviceRemovable 位是否已設定裝置所連線的埠。 如果已設定 DeviceRemovable 位,則連結至埠的裝置會從中樞卸載。 如果未設定 DeviceRemovable 位,則連接到埠的裝置不會從中樞卸載。

    USB 匯流排驅動程式會將埠卸載/不可卸載狀態報表給 PnP 管理員,這會透過下列步驟為 devnode 產生 ContainerId

    • 如果中樞指出連接到指定埠的裝置從中樞卸載,PnP 管理員會判斷連接到此埠的裝置是電腦外部的裝置。 它為 devnode 產生的容器識別碼是裝置 USB 序號的雜湊,或是隨機產生的值。

    • 如果中樞指出連接到指定埠的裝置無法從中樞卸載,PnP 管理員會判斷連結至此埠的裝置是多功能裝置的子功能。 在此情況下,devnode 會繼承父 devnode 的容器識別碼。

如需 ACPI 3.0 介面的詳細資訊,請參閱 進階設定和電源介面規格修訂 3.0b