從卸除式裝置功能覆寫產生的容器標識碼
從 Windows 7 開始,新裝置應該提供總線特定的唯一標識碼 (,如 從 Bus-Specific 唯一標識符產生的容器 標識碼) 中所述。
或者,裝置和總線驅動程式必須正確設定卸除式裝置功能 (,如 從卸載式裝置功能) 產生的容器 標識碼中所述。 如需卸除式裝置功能的詳細資訊,請參閱 卸載式裝置功能概觀。
Windows 7 和更新版本的 Windows 也支援覆寫回報抽取式裝置功能的機制。 此機制適用於報告卸除式裝置功能的舊版裝置不正確。
雖然覆寫機制不會變更卸除式裝置功能的值,但它會強制 PnP 管理員使用覆寫設定,而不是為裝置產生容器標識符時可移動裝置功能的值。
透過此覆寫機制,容器標識碼可以透過登錄型方法產生。 一旦為裝置的最上層 (父系) 裝置節點產生容器標識碼, (開發節點) 裝置時,裝置的每個子開發節點都會透過 從卸除式裝置功能產生的啟發學習法繼承相同的容器標識符。
覆寫機制是以登錄為基礎的查閱表格,其中包含對應至特定裝置的登錄機碼。 此覆寫數據表會保留在 DeviceOverrides 登錄機碼之下,並包含下列登錄機碼和子機碼。
數據表層級 | 登錄機碼/子機碼名稱 | 描述 |
---|---|---|
1 |
所有卸載式裝置功能覆寫的父鍵。 |
|
2 |
指定套用卸除式裝置功能覆寫之裝置 的硬體 識別碼。 此子機碼的名稱是實際的硬體標識碼,所有反斜杠 (''') 字元都會取代為數位 ('#') 字元。 |
|
2 |
指定要套用卸除式裝置功能覆寫之裝置的 相容標識碼 。 此子機碼的名稱是實際的硬體標識碼,所有反斜杠 (''') 字元都會取代為數位 ('#') 字元。 |
|
3 |
指定只有裝置父裝置節點的位置路徑 (devnode) 才會套用卸載式裝置功能覆寫。 |
|
3 |
指定裝置子開發節點的位置路徑將套用卸載式裝置功能覆寫。
注意 除非同時指定 LocationPaths 登錄子機碼,或為父開發節點指定 ChildLocationPaths 登錄子機碼,否則指定的裝置父代開發節點不會受到卸除式裝置功能覆寫的影響。
|
|
4 |
指定可行動裝置功能覆寫所套用之 devnode 的離散位置路徑。 此子機碼的名稱是計算機上安裝之裝置之單一 devnode 實例的實際位置路徑。 |
|
4 |
指定卸除式裝置功能覆寫適用於指定裝置的所有 devnode。 |
在 LocationPath 和 * 登錄子機碼內,DWORD值 (可移動 式) 指定適用的 devnode 是否被視為可移動式 (1) 或非卸除式 (0) 。
範例 1
以下顯示開發節點的裝置覆寫,除了透過LocationPaths登錄子機碼指定的位置路徑之外,還符合 HardwareID 登錄子機碼。
在此範例中,覆寫會停用卸除式裝置功能,並套用至 VID_1234&PID_5678位於位置路徑 PCIROOT (0 ) #PCI (102) #USBROOT (0) #USB (1) 的所有開發節點。
以下是此覆寫的登錄數據表格式範例。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceOverrides
USB#VID_1234&PID_5678
LocationPaths
PCIROOT(0)#PCI(102)#USBROOT(0)#USB(1)
Removable=0
在此範例中, USB#VID_1234&PID_5678
是 HardwareID 登錄子機碼的名稱,而 PCIROOT(0)#PCI(102)#USBROOT(0)#USB(1)
是 LocationPath 登錄子機碼的名稱。
此覆寫會變更 PnP) 管理員對裝置拓撲的解譯 隨插即用 (。 請注意,具有USB\VID_1234&PID_5678 硬體標識碼 值的devnode 在登錄中標示為不可卸除。 不會為此 devnode 產生新的容器標識符,因為 PnP 管理員會將 devnode 解譯為無法從其父代卸除。 相反地,USB\VID_1234&PID_5678 (及其所有子系) 繼承其父代的 ContainerID {A ) } (容器標識符{A}。
此覆寫的結果是單一裝置群組,因為樹狀結構中的所有開發節點都有相同的容器標識碼。 裝置 USB\VID_1234&PID_5678會解譯為與電腦整合。
下圖顯示產生的裝置拓撲和相關聯的容器標識碼指派。
上一個範例顯示經常遇到的開發節點拓撲:裝置硬式連線到特定總線位置的可攜式計算機,不正確地將自己回報為卸除式。 實體與計算機整合的裝置,例如網路攝影機或生物特徵辨識 (指紋) 感測器,不應該回報為可移動裝置,因為使用者無法實際將它們與計算機分開。 卸除式覆寫可讓獨立硬體廠商 (IHV) 或原始設備製造商 (OEM) 變更 PnP 管理員解譯卸載式裝置功能的方式,進而影響裝置的容器標識符指派。
範例 2
以下顯示符合特定 硬體 識別碼值之所有開發節點的抽取式裝置功能覆寫。
在此範例中,覆寫會啟用卸載式裝置功能,並將覆寫套用至硬體標識碼值為USB\VID_062A&PID_0000的開發節點。
以下是此覆寫之登錄數據表格式的高階描述。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceOverrides
USB#VID_062A&PID_00001
LocationPaths
*
Removable=1
1 HardwareID 登錄子機碼的名稱。
在此範例中,具有USB\VID_1234&PID_5678 硬體 標識符的開發節點會正確報告裝置卸載式功能。 PnP 管理員會為其及其所有子開發節點產生容器標識碼 (ContainerID {B}) 。
不過,具有USB\VID_062A&PID_0000 硬體 標識符的子開發節點符合覆寫。 因此,PnP 管理員會產生另一個包含的標識碼, (ContainerID {C}) 此 devnode 及其所有子開發節點。
如同先前,此覆寫會變更 PnP 管理員對裝置拓撲的解譯。 實體裝置會指派兩個容器標識碼,並由 Windows 視為兩個裝置。 請注意,具有 USB\VID_062A&PID_0000 硬體 識別碼的 devnode 會解譯為可移動套件,將開發節點分組到裝置中。 這不會變更 devnode 針對裝置卸除式功能所報告的值。
此外,已指定 * 登錄子機碼,表示此覆寫應該套用至計算機上具有USB\VID_062A&PID_0000 硬體 標識碼的所有開發節點。
下圖顯示產生的裝置拓撲和相關聯的容器標識碼指派。