LocationPath 注册表子项

从 Windows 7 开始, LocationPath 注册表子项指定通过 HardwareIDCompatibleID 注册表子项标识的单个设备的可移动设备功能替代的位置路径。 有关可移动设备功能替代的详细信息,请参阅 DeviceOverrides 注册表项

LocationPath 注册表子项仅将可移动设备功能值应用于位于指定位置路径的设备节点 (devnode) 。 这允许将可移动设备功能替代应用于系统中安装的设备的单个实例。 其他位置路径上具有相同 HardwareIDCompatibleID 的其他设备不受此类可移动设备功能替代的影响。

按照约定,位置路径字符串采用 ServiceName (BusSpecificLocation) 的形式。 例如,PCI 设备使用 PCI (XXYY) ,其中 XX 是设备编号, YY 是函数编号。 字符串对于设备而言是唯一的,相对于其总线。 即插即用 (PnP) 管理器为开发节点树中的每个节点组合位置路径。 树中的每个 devnode 将其服务名称字符串连接到其父 devnode 提供的位置路径字符串的末尾。 因此,树中任何开发节点的位置都可以通过位置路径唯一标识。

下表定义了 LocationPath 注册表子项的格式和要求。

注册表子项名称 必需/可选 格式要求 父子项 子子项

有效的“LocationPath”值

必须存在可选 (* 或有效位置路径,以指示可移动设备功能覆盖的范围)

LocationPathsChildLocationPaths

必须存在 LocationPath* 注册表子项,以指示可移动设备功能替代的范围。

LocationPath 子项必须包含可移动 DWORD 值,该值指定设备是否可移动。 下表定义了有效的 可移动 值。

可移动值 说明

0

开发节点应被视为不可移动

1

devnode 应被视为可移动

可以通过以下步骤设备管理器显示给定开发节点的位置路径字符串:

  1. 打开设备管理器并找到要应用注册表替代的开发节点。 为此,可能需要通过连接将视图更改为 “设备”。

  2. 右键单击开发节点,单击“ 属性” ,然后单击“ 详细信息 ”选项卡。

  3. “属性” 下拉列表中,找到 LocationPaths 属性。 此属性包含此开发节点的位置路径字符串,是应用于 LocationPath 注册表子项的值。

注意 开发节点可能没有 LocationPaths 值。 这是因为此开发节点的驱动程序或其父级之一未实现 GUID_PNP_LOCATION_INTERFACE 接口。 在这种情况下,必须为 LocationPaths 属性检查父开发节点。

LocationPaths 注册表子项用于覆盖硬连线到固定总线位置的设备的可移动设备功能。 这通常发生在便携式计算机中,包括以下设备:

  • 无线网络适配器

  • 蓝牙适配器

  • 键盘或指针设备

这些设备位于用户无法更改的固定位置的不同内部总线上。 通过 LocationPaths 替代,可以指定只有给定总线位置的设备受可移动设备功能替代的影响。 这可以防止替代影响其他总线位置的设备,这些设备可能与替代目标共享相同的 HardwareIDCompatibleID 子项值。 当设备仅指定 CompatibleID 子项值以匹配收件箱驱动程序时,这种情况很常见。

使用 ChildLocationPaths 注册表子项替代子开发节点的可移动设备功能时,仅针对特定位置的子开发节点(无论它们是哪种类型的设备)通常都很有用。

例如,笔记本电脑可能具有同时具有内部和外部端口的内部 USB 集线器。 如果此 USB 集线器错误地将其内部端口报告为外部端口,则内部硬连接到这些端口的任何设备将被错误地识别为可移动。 同样,如果所有端口都错误地报告为内部端口,则任何外部连接的设备都被视为笔记本电脑的不可插入部分。

若要发现连接到外部 USB 端口的设备的位置路径值,可以将任何设备插入端口并观察其位置路径属性。 插入同一端口的任何其他 USB 设备都应收到相同的位置路径值,因为父总线及其内部标识端口的方式永远不会更改。