【问题标题】:Are there name restrictions on "Device Instance Path" names?“设备实例路径”名称是否有名称限制?
【发布时间】:2021-06-05 04:56:23
【问题描述】:

我在询问 Win32 设备实例路径名称。您会在设备管理器中看到这些类型的路径。一个示例设备实例路径名称是 ACPI\DLLK0706\3&11583659&0 用于键盘。

对设备实例路径名称有任何限制吗?例如,我没有看到任何长度超过 255 个字符或使用任何非 ASCII 字符的路径名,但这些限制是真实存在的还是只是巧合?

【问题讨论】:

    标签: winapi device-driver


    【解决方案1】:

    PDO 设备在处理IRP_MN_QUERY_ID 时返回的设备实例路径。并且存在一些长度限制(必须小于 MAX_DEVICE_ID_LEN 个字符长)并且不能使用任何非 ASCII 字符(都必须在 [ 0x20, 0x80) 范围,不能是';' in string)

    如果司机返回带有非法字符的 ID,系统将 错误检查。具有以下值的字符在 ID 中是非法的 对于这个 IRP:

    • 小于等于0x20('')
    • 大于 0x7F
    • 等于 0x2C (',')

    驱动程序必须符合以下 ID 长度限制:

    • 驱动程序在此 IRP 中返回的每个硬件 ID 或兼容 ID 的长度必须小于 MAX_DEVICE_ID_LEN 个字符。这个常数 当前的值为 200,如 sdk\inc\cfgmgr32.h 中所定义。
    • 驱动程序在此 IRP 中返回的容器 ID 必须采用全局唯一标识符 (GUID) 格式,并且必须是
      MAX_GUID_STRING_LEN 个字符,其中包括空终止符。
    • 如果总线驱动程序为其子设备提供全局唯一的实例 ID(即,驱动程序将 DEVICE_CAPABILITIES.UniqueID 设置为
      设备),则设备 ID 加上实例 ID 的组合必须 少于 (MAX_DEVICE_ID_LEN - 1) 个字符。经营的 系统需要附加字符作为路径分隔符。
    • 如果总线驱动程序不为其子设备提供全局唯一的实例 ID,则设备 ID 和实例的组合 ID 必须小于 (MAX_DEVICE_ID_LEN - 28)。的价值 这个等式目前是 172

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      相关资源
      最近更新 更多