6.1. 设备标识对象
设备标识对象将每个平台设备与该设备的一个即插即用设备 ID 相关联。所有设备标识对象如下表所列:
表 6.1 设备标识对象
| 对象 | 说明 |
|---|---|
| _ADR | 求值后得到设备在其父总线上的地址的对象。 |
| _CID | 求值后得到设备的即插即用兼容 ID 列表的对象。 |
| _CLS | 求值后得到一个包含编码设备类别信息的包的对象。 |
| _DDN | 将一个逻辑软件名称(例如 COM1)与设备相关联的对象。 |
| _HID | 求值后得到设备的即插即用硬件 ID 的对象。 |
| _HRV | 求值后得到一个整数硬件修订号的对象。 |
| _MLS | 以多种语言提供设备的人类可读描述的对象。 |
| _PLD | 提供物理位置描述信息的对象。 |
| _SUB | 求值后得到设备的即插即用子系统 ID 的对象。 |
| _SUN | 求值后得到某个插槽的插槽唯一 ID 编号的对象。 |
| _STR | 包含设备的 Unicode 标识符的对象。也可用于热区。 |
| _UID | 指定设备唯一持久 ID 的对象,或生成该 ID 的控制方法。 |
对于位于不可枚举类型总线上的任何设备(例如 ISA 总线),OSPM 会枚举设备的标识符,因此 ACPI 系统固件必须为每个设备提供一个 _HID 对象(以及一个或多个可选对象,如 _CID、_CLS、_HRV、_SUB),以使 OSPM 能够执行此操作。对于位于可枚举类型总线上的设备,例如 PCI 总线,ACPI 系统必须标识可枚举总线上由特定地址标识的是哪个设备;为此,ACPI 系统固件必须为每个设备提供一个 _ADR 对象。设备对象必须包含 _HID 对象或 _ADR 对象之一,但不能同时包含两者。
如果这些对象中的任何一个被实现为控制方法,则这些方法可能依赖于操作区域。由于这些控制方法可能在操作区域提供者可用之前就被求值,因此控制方法必须被构造为能够在没有操作区域提供者的情况下执行。(_REG 方法将操作区域提供者的存在通知给平台运行时固件。)当控制方法由于缺少操作区域提供者而无法确定硬件当前状态时,建议控制方法返回在控制从平台引导固件移交给 OS 时为真的条件。(控制方法应返回默认的引导值。)
6.1.1. _ADR(地址)
此对象用于向 OSPM 提供设备在其父总线上的地址。在指定任何位于具有标准枚举算法的总线上的设备地址时,必须使用 _ADR 对象(关于这些设备何时会出现在 ACPI 命名空间中的情况,参见配置和“即插即用”)。_ADR 对象仅在增强设备描述符中有效。
参数:
None
返回值:
一个包含设备地址的 Integer
即使设备不存在,也可以使用 _ADR 对象为指定地址提供能力。这使系统能够为父总线上的某个插槽提供能力。
OSPM 从 _ADR 对象的设备包在 ACPI 命名空间中的位置推断父总线和段。有关设备包在 ACPI 命名空间中定位的更多信息,请参见 Device(声明设备包)
_ADR 对象信息必须是静态的,并且可为 ADR 对象地址编码中列出的以下总线类型定义。
表 6.2 ADR 对象地址编码
| 总线 | 地址编码 |
|---|---|
| EISA | EISA 插槽号 0-F |
| Floppy Bus | 用于编程软盘控制器以访问指定 INT13 单元号的驱动器选择值。_ADR 对象应按驱动器选择编码从 0-3 排序。 |
| I3C | 位 [63:52] - 保留 位 [51:48] - 主实例 位 [47:0] - I3C 设备临时 ID,遵循 MIPI Specification for I3C 中定义的编码。如果 I3C 设备支持静态地址而不是临时 ID,则位 [47:7] 为保留(零),位 [6:0] 为 7 位静态地址。 |
| IDE Controller | 0-主通道,1-从通道 |
| IDE Channel | 0-主驱动器,1-从驱动器 |
| Intel® High Definition Audio | 高字 - 包含功能组的编解码器的 SDI(Serial Data In)ID。低字 - 功能组的节点 ID。 |
| PCI | 高字-设备号,低字-功能号。(例如,设备 3、功能 2 为 0x00030002)。要引用某个设备号上的所有功能,请使用功能号 FFFF)。 |
| PCMCIA | 插槽号;0-第一个插槽 |
| PC CARD | 插槽号;0-第一个插槽 |
| Serial ATA | SATA 端口:高字–根端口号,低字–SATA 端口倍增器下的端口号,如果未连接端口倍增器则为 0xFFFF。(例如,根端口 2 为 0x0002FFFF。如果在根端口 2 上连接了端口倍增器,则连接到该倍增器的端口将编码为 0x00020000、0x00020001 等。)值 0xFFFFFFFF 为保留。 |
| SMBus | 最低从设备地址 |
| USB Root HUB | 主控制器只有一个子节点。它的 _ADR 必须为 0。不允许有其他子节点或其他 _ADR 值。 |
| USB Ports | 端口号(1-n) |
| SDIO Bus | 高字 - 插槽号(0-第一个插槽)低字 - 功能号(定义见 SD 规范。) |
| NVDIMM | NVDIMM Region Mapping Structure 中定义的 NFIT 设备句柄 |
6.1.2. _CID(兼容 ID)
此可选对象用于向 OSPM 提供设备的即插即用兼容设备 ID。当设备没有其他已定义的硬件标准方法来报告其兼容 ID 时,使用 _CID 对象。_CID 对象仅在完整设备描述符中有效。还必须存在 _HID 对象。
参数:
None
返回值:
包含单个 CID 的 Integer 或 String,或 包含 CID 列表的 Package
_CID 对象求值结果为以下之一:
单个兼容设备 ID
设备的兼容设备 ID 包——按优先级顺序排列,最高优先级在前。
每个兼容设备 ID 必须是以下之一:
有效的 HID 值(32 位压缩 EISA 类型 ID,或诸如 “ACPI0004” 之类的字符串)。
使用特定于总线命名法的字符串。例如,_CID 可用于指定 PCI ID。PCI ID 字符串的格式为以下之一:
"PCI\CC_ccss" "PCI\CC_ccsspp" "PCI\VEN_vvvv&DEV_dddd&SUBSYS_ssssssss&REV_rr" "PCI\VEN_vvvv&DEV_dddd&SUBSYS_ssssssss" "PCI\VEN_vvvv&DEV_dddd&REV_rr" "PCI\VEN_vvvv&DEV_dddd"其中:
cc - 类别代码字节的十六进制表示 ss - 子类代码字节的十六进制表示 pp - 编程接口字节的十六进制表示 vvvv - Vendor ID 的十六进制表示 dddd - Device ID 的十六进制表示 ssssssss - 子系统 ID 的十六进制表示 rr - 修订字节的十六进制表示
从 _CID 对象获取的兼容 ID 只有在其为非 NULL 值时才有意义。
ASL 示例 :
Device (XYZ) {
Name (_HID, EISAID ("PNP0303")) // PC Keyboard Controller
Name (_CID, EISAID ("PNP030B"))
}
6.1.3. _CLS(类代码)
此对象用于向 OSPM 提供设备的 PCI 定义的基类、子类和编程接口。此对象是可选的。但是,对于与 PCI 定义的设备类兼容、但未实现在 PCI 总线上的硬件(因此由 ACPI 枚举),它可能对加载通用驱动程序很有用。
参数:
None
返回值:
一个 Package,包含以 Integers 列表形式表示的 PCI 定义的类信息:
Package(3) {<base-class code>, <sub-class code>, <Programming Interface code>}
可用类代码和编程接口代码的列表由 PCI SIG 提供。参见“PCI Code and ID Assignment Specification”,可从“Links to ACPI-Related Documents”(http://uefi.org/acpi ) 下的标题“PCI Code and ID Assignment Specification”获取
ASL 示例:
Device(SATA) //AHCI- compatible SATA controller
{
Name(_HID, "...")
Name(_CLS, Package (3)
{
0x01, // Base Class (01h == Mass Storage)
0x06, // Sub-Class (06h == SATA)
0x01, // Programming Interface (01h == AHCI)
})
Name(_CRS, ResourceTemplate()
{
... // AHCI-defined system resources
})
}
6.1.4. _DDN(DOS 设备名)
此对象用于将逻辑名称(例如 COM1)与设备相关联。应用程序可使用此名称连接到该设备。
参数:
None
返回值:
包含 DOS 设备名称的 String
6.1.5. _HID(硬件 ID)
此对象用于向 OSPM 提供设备的 PNP ID 或 ACPI ID。
另请参见
PNP ID 和 ACPI ID Registry 位于 http://www.uefi.org/PNP_ACPI_Registry 。
在描述平台时,使用任何 _HID 对象都是可选的。但是,必须使用 _HID 对象来描述任何将由 OSPM 枚举的设备。只有当没有总线枚举器能够检测设备 ID 时,OSPM 才会枚举设备。例如,ISA 总线上的设备由 OSPM 枚举。对由 OSPM 之外的总线枚举器枚举的设备,请使用 _ADR 对象进行描述。_HID 对象仅在完整设备描述符中有效。
参数:
None
返回值:
包含 HID 的 Integer 或 String
_HID 对象求值为一个数值型 32 位压缩 EISA 类型 ID 或字符串。若为字符串,其格式必须是字母数字形式的 PNP 或 ACPI ID,且不能带星号或其他前导字符。
有效的 PNP ID 必须采用“AAA####”的形式,其中 A 为大写字母,# 为十六进制数字。有效的 ACPI ID 必须采用“NNNN####”的形式,其中 N 为大写字母或数字(‘0’-‘9’),# 为十六进制数字。本规范保留字符串“ACPI”仅供本文定义的设备使用。它还保留所有表示 4 位十六进制数字的字符串,专供 PCI 分配的供应商 ID 使用。
ASL 示例:
Name (_HID, EISAID ("PNP0C0C")) // Control-Method Power Button
Name (_HID, EISAID ("INT0800")) // Firmware Hub
Name (_HID, "ACPI0003") // AC adapter device
Name (_HID, "MSFT0003") // Vendor-defined device
Name (_HID, "80860003") // PCI-assigned device identifier
6.1.6. _HRV(硬件版本)
此对象用于向 OSPM 提供设备的硬件版本。_HRV 的使用是可选的。
参数:
无
返回值:
包含硬件版本号的 Integer (DWORD)
ASL 示例:
Name (_HRV, 0x0003) // Revision number 3 of this hardware device
6.1.7. _MLS(多语言字符串)
_MLS 对象为 OSPM 提供设备的人类可读多语言描述。当 OSPM 无法获取有关此设备的任何其他信息时,可将此信息提供给最终用户。尽管 _STR 对象也提供了此功能,但 _MLS 扩展了该功能,并为厂商提供了在多种语言中提供多个字符串的能力。_MLS 对象求值为一个包的包。每个子包由一个语言标识符和对应的特定区域 Unicode 字符串组成。指定语言标识符可使 OSPM 轻松确定是否支持显示该 Unicode 字符串。OSPM 可利用此信息来判断是否显示设备字符串,或判断哪一个字符串适合用户首选区域设置。
假定 OSPM 将始终支持主要英语区域,以容纳非英语字符串中嵌入的英语内容,例如品牌名称。
如果 OSPM 不支持特定的子语言 ID,它可以选择使用主要语言 ID 来显示设备文本。
参数:
无
返回值:
一个可变长度的 Package,其中包含如下所述的语言描述符 Package 列表。
返回值信息:
Package {
LanguageDescriptor[0] // Package
LanguageDescriptor[n] // Package
}
每个语言描述符子 Package 包含如下所述的元素:
Package {
LanguageId // String
UnicodeDescription // Buffer
}
LanguageId 是一个标识语言的字符串。该字符串遵循 Internet RFC 3066 文档(语言标识标签)中规定的格式。除支持 RFC 3066 中现有字符串外,下表还列出了同样受支持的别名。
表 6.3 额外语言 ID 别名字符串
| RFC 字符串 | 支持的别名字符串 |
|---|---|
| zh-Hans | zh-chs |
| zh-Hant | zh-cht |
UnicodeDescription 是一个包含 Unicode(UTF-16)字符串的 Buffer。该字符串包含与 LanguageID 对应的、特定语言的设备描述。可使用 Unicode() ASL 宏来创建此 Buffer。
示例:
Device (XYZ) {
Name (_ADR, 0x00020001)
Name ( \_MLS, Package(){(2){"en", Unicode("ACME super DVD controller")}})
}
6.1.8. _PLD(设备物理位置)
此可选对象是一个方法,用于向 OSPM 传达设备外部连接点物理位置的概述。_PLD 可以作为系统希望描述的任意 ACPI 命名空间对象的子对象。系统软件可使用此信息向用户说明在某项任务中应使用哪个特定连接器或设备输入机构,或者为了正确运行可能需要用户干预。只有在其父设备处于存在状态(即由设备存在机制指示,如 _STA 或其他机制)时,才应对 _PLD 进行求值。
一个外部可见的设备连接点可以位于系统机壳的任何表面。系统机壳的各个表面由下面描述的“Panel”字段标识。_PLD 方法返回数据,用于描述设备连接点所在的位置,以及可在该位置渲染的形状(如下所述)。一个物理设备可能有多个连接点。_PLD 描述单个设备连接点相对于其所在 Panel 左下角“原点”的偏移和旋转。
所有 Panel 引用(Top、Bottom、Right、Left 等)都按用户正面面对系统时的视角来解释。对于手持移动设备,正面面板是承载显示屏的那一面,其原点位于以纵向方向查看显示屏时的左下角。例如,Right Panel 是从正面看时系统的右侧。
Panel 的所有“原点”引用都按用户正面面对相应 Panel 时其左下角来解释。Top Panel 应在系统平放于 Front Panel 时查看,而 Bottom Panel 应在系统放置于 Back Panel 上时查看。其他所有 Panel 应在系统放置于 Bottom Panel 上时查看。更多信息请参见系统面板和面板原点位置。

图 6.1 系统面板和面板原点位置
数据位还假定:如果系统能够像笔记本电脑一样打开,那么设备可能存在于笔记本主体或上盖上。在后一种情况下,应设置下面描述的“Lid”位,表示设备连接点位于上盖上。如果设备位于上盖上,则该描述说明的是系统在上盖打开时设备连接点的位置。如果设备连接点不在上盖上,则该描述说明的是系统在上盖关闭时设备连接点的位置。

图 6.2 笔记本电脑面板和面板原点位置
为了渲染系统某个 Panel 的视图,会收集所有定义相同 Panel 和 Lid 值的 _PLD。然后按其 Order 字段的值对这些 _PLD 进行排序,并按顺序从所有 Order = 0 的 _PLD 开始,绘制每个连接点的形状(使用其正确的 Shape、Color、Horizontal Offset、Vertical Offset、Width、Height 和 Orientation)来渲染该面板视图。示例请参见 PLD 后面板渲染。
设备连接点的位置可能会因系统连接到或断开与扩展坞或端口复制器的连接而改变。因此,类型为 0x09 的 Notify 事件将导致 OSPM 重新求值位于该特定已通知设备下的 _PLD 对象。如果平台无法检测连接到或断开与扩展坞或端口复制器的变化,则不应使用 _PLD 对象来描述在此类事件后会改变位置的设备连接点。
参数:
无
返回值:
一个可变长度的 Package,其中包含一个 Buffer 列表
此方法返回一个 Package,其中包含单个或多个 Buffer 条目。必须至少使用下面的位定义返回一个 Buffer 条目。
表 6.4 Buffer 0 返回值
| 名称 | 定义 | DWORD | 位偏移(DWORD) | 位偏移(缓冲区) | 长度(位) |
|---|---|---|---|---|---|
| 修订版本 | 当前修订版本为 0x2 | 0 | 0 | 0 | 7 |
| 忽略颜色 | 如果设置了此位,则忽略颜色字段,因为颜色未知。 | 0 | 7 | 7 | 1 |
| 颜色 | 设备连接点颜色的 24 位 RGB 值:位 [15:8]=红色值 位 [23:16]=绿色值 位 [31:24]=蓝色值 | 0 | 8 | 8 | 24 |
| 宽度 | 设备连接点最宽处的宽度,以毫米为单位 | 1 | 0 | 32 | 16 |
| 高度 | 设备连接点最高处的高度,以毫米为单位 | 1 | 16 | 48 | 16 |
| 用户可见 | 如果用户无需拆解即可看到设备连接点,则设置。 | 2 | 0 | 64 | 1 |
| 扩展坞 | 如果设备连接点位于扩展坞或端口复制器中,则设置。 | 2 | 65 | 1 | |
| 盖板 | 如果该设备连接点位于笔记本系统的盖板上,则设置。 | 2 | 66 | 1 | |
| 面板 | 描述设备连接点位于系统机壳的哪个面板表面上:0 - 顶部 1 - 底部 2 - 左侧 3 - 右侧 4 - 前面 5 - 后面 6 - 未知(将忽略垂直位置和水平位置) | 2 | 67 | 3 | |
| 设备连接点所在面板上的垂直位置 | 0 - 上部 1 - 中部 2 - 下部 | 2 | 70 | 2 | |
| 设备连接点所在面板上的水平位置。 | 2 | 72 | 2 | ||
| 形状 | 描述设备连接点的形状。宽度和高度字段可用于使形状失真,例如,如果宽度和高度不相等,圆形看起来会像椭圆形。如果宽度和高度相等,竖直矩形或水平矩形可能看起来像正方形。参见默认形状定义:0 - 圆形 1 - 椭圆形 2 - 正方形 3 - 竖直矩形 4 - 水平矩形 5 - 竖直梯形 6 - 水平梯形 7 - 未知 - 形状渲染为带虚线的矩形 15:9 - 保留 | 2 | 74 | 4 | |
| 分组方向 | 如果设置,表示垂直分组;否则假定为水平分组。 | 2 | 78 | 1 | |
| 分组令牌 | 标识一个组的唯一数值。 | 2 | 79 | 1 | |
| 分组位置 | 标识该设备连接点在组中的位置(即第 1 个、第 2 个) | 2 | 87 | 8 | |
| 设备舱 | 如果描述的是设备舱中的设备,或者设备连接点是一个设备舱,则设置。 | 2 | 95 | 1 | |
| 可弹出 | 如果设备可弹出,则设置。表示在不存在 _EJx 对象时的可弹出性。 | 2 | 96 | 1 | |
| 需要 OSPM 参与弹出 | 需要 OSPM 参与弹出:如果弹出过程需要 OSPM 参与,则设置。用户无法通过物理硬件手动弹出。 | 2 | 97 | 1 | |
| 机柜编号 | 对于单机柜系统,此字段始终为 0。 | 2 | 98 | 8 | |
| 卡笼编号 | 对于单卡笼系统,此字段始终为 0。 | 2 | 106 | 8 | |
| 参考 | 如果设置,则此 _PLD 定义一个“参考”形状,用于在渲染 _PLDs 时帮助用户相对于其他形状进行定位。 | 2 | 114 | 1 | |
| 旋转 | 将形状围绕其原点按 45 度步进顺时针旋转,其中:0 - 0° 1 - 45° 2 - 90° 3 - 135° 4 - 180° 5 - 225° 6 - 270° 7 - 315° | 2 | 115 | 4 | |
| 顺序 | 标识由 _PLD 描述的连接点的绘制顺序:顺序 = 0 的连接点先于顺序 = 1 的连接点绘制。顺序 = 1 先于顺序 = 2,以此类推。顺序 = 31 的连接点最后绘制。顺序应始终从 0 开始并连续分配。 | 2 | 119 | 5 | |
| Reserved | 保留,必须包含值 0。 | 2 | 124 | 4 | |
| 垂直偏移 | 形状原点相对于面板原点的偏移(单位为 mm)。值 0xFFFFFFFF 表示未提供此字段。 | 2 | 128 | 16 | |
| 水平偏移 | 形状原点相对于面板原点的偏移(单位为 mm)。值 0xFFFFFFFF 表示未提供此字段。 | 2 | 144 | 16 |
注
返回的所有附加缓冲区条目都可以包含 OEM 特定的数据,但必须以一个 {GUID, data} 对开始。这些附加数据可以提供特定于某些系统或某类机器的补充物理位置信息。

图 6.3 默认形状定义
缓冲区 1–N 返回值(可选) :
缓冲区 1 位 [127:0] - GUID 1
缓冲区 2 位 [127:0] - 数据 1
缓冲区 3 位 [127:0] - GUID 2
缓冲区 4 位 [127:0] - 数据 2
等等。
PLD 背板渲染给出了一个示例,说明如何将 _PLD 信息所传达的外部设备连接点渲染并展示给用户。请注意,有三个与系统总线树(_SB)对象关联的 _PLD(系统背板、电源以及主板 (MB) 连接器区域)。它们的参考标志被设置,表示它们用于在视觉上为用户提供线索,以识别其他设备连接点的相对位置。
连接点(C1 到 C16)由系统总线树中找到的 _PLD 对象定义。
以下连接点的面板和盖板字段分别都设置为后面和 0。并且系统背板、电源和 MB 连接器区域连接点的参考标志都设置为 1。在本示例中,这些设置用于渲染 PLD 背板渲染:
表 6.5 PLD 背板示例设置
| 名称 | 忽略颜色 | R | G | B | 宽度 | 高度 | VOff | HOff | 形状 | 标记 | 分组位置 | 旋转 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Back Panel | Yes | 0 | 0 | 0 | 2032 | 4318 | 0 | 0 | V Rect | 1 | 0 | |
| MB Conn area | Yes | 0 | 0 | 0 | 445 | 1556 | 1588 | 127 | V Rect | 2 | 0 | |
| Power Supply | Yes | 0 | 0 | 0 | 1524 | 889 | 3302 | 127 | H Rect | 2 | 0 | |
| USB Port 1 | No | 0 | 0 | 0 | 125 | 52 | 2223 | 159 | H Rect | C1 | 3 | 90 |
| USB Port 2 | No | 0 | 0 | 0 | 125 | 52 | 2223 | 254 | H Rect | C2 | 3 | 90 |
| USB Port 3 | No | 0 | 0 | 0 | 125 | 52 | 2223 | 350 | H Rect | C3 | 3 | 90 |
| USB Port 4 | No | 0 | 0 | 0 | 125 | 52 | 2223 | 445 | H Rect | C4 | 3 | 90 |
| USB Port 5 | No | 0 | 0 | 0 | 125 | 52 | 2007 | 159 | H Rect | C5 | 3 | 90 |
| USB Port 6 | No | 0 | 0 | 0 | 125 | 52 | 2007 | 254 | H Rect | C6 | 3 | 90 |
| Ethernet | No | 0 | 0 | 0 | 157 | 171 | 2007 | 350 | V Rect | C7 | 3 | 90 |
| Audio 1 | No | FF | FF | FF | 127 | 127 | 1945 | 151 | Round | C8 | 3 | 90 |
| Audio 2 | No | 151 | 247 | 127 | 127 | 127 | 1945 | 286 | Round | C9 | 3 | 90 |
| Audio 3 | No | 0 | 0 | 0 | 127 | 127 | 1945 | 427 | Round | C10 | 3 | 90 |
| SPDIF | No | 0 | 0 | 0 | 112 | 126 | 1756 | 176 | V Trap | C11 | 3 | 90 |
| Audio 4 | No | 0 | FF | 0 | 127 | 127 | 1765 | 288 | Round | C12 | 3 | 90 |
| Audio 5 | No | 0 | 0 | FF | 127 | 127 | 1765 | 429 | Round | C13 | 3 | 90 |
| SATA | No | 0 | 0 | 0 | 239 | 88 | 3091 | 159 | H Rect | C14 | 3 | 90 |
| 1394 | No | 0 | 0 | 0 | 112 | 159 | 2890 | 254 | H Trap | C15 | 3 | 0 |
| Coax | No | 0 | 0 | 0 | 159 | 159 | 2842 | 143 | Round | C16 | 3 | 90 |
| PCI 1 | No | 0 | 0 | 0 | 1016 | 127 | 127 | 127 | H Rect | 1 | 3 | 0 |
| PCI 2 | No | 0 | 0 | 0 | 1016 | 127 | 334 | 127 | H Rect | 2 | 3 | 0 |
| PCI 3 | No | 0 | 0 | 0 | 1016 | 127 | 540 | 127 | H Rect | 3 | 3 | 0 |
| PCI 4 | No | 0 | 0 | 0 | 1016 | 127 | 747 | 127 | H Rect | 4 | 3 | 0 |
| PCI 5 | No | 0 | 0 | 0 | 1016 | 127 | 953 | 127 | H Rect | 5 | 3 | 0 |
| PCI 6 | No | 0 | 0 | 0 | 1016 | 127 | 1159 | 127 | H Rect | 6 | 3 | 0 |
| PCI 7 | No | 0 | 0 | 0 | 1016 | 127 | 1366 | 127 | H Rect | 7 | 3 | 0 |
请注意,原点位于背板的左下角,其中正的 Horizontal Offset 和 Vertical Offset 值分别表示向右和向上。

图 6.4 PLD 背板渲染
6.1.9. _SUB(子系统 ID)
此对象用于向 OSPM 提供设备的子系统 ID。使用 _SUB 是可选的。
参数:
无
返回值:
包含 SUB 的字符串
_SUB 对象求值为一个字符串,其格式必须是有效的 PNP 或 ACPI ID,且不带星号或其他前导字符。
有关 PNP 和 ACPI ID 字符串的定义,请参见 _HID(_HID(硬件 ID))的定义。
ASL 示例 :
Name (_SUB, "MSFT3000") // 供应商定义的子系统
6.1.10. _STR(字符串)
_STR 对象求值为一个 Unicode 字符串,用于描述设备或热区。OS 可以使用它向最终用户提供信息。当没有其他信息可用时,此信息尤其有价值。
参数:
无
返回值:
包含描述设备的 Unicode 字符串的 Buffer
ASL 示例 :
Device (XYZ) {
Name (_ADR, 0x00020001)
Name (_STR, Unicode ("ACME super DVD controller"))
}
然后,当所有其他方法都失败时,OS 可以使用 _STR 对象中包含的信息向用户描述该硬件。
6.1.11. _SUN(槽位用户编号)
_SUN 是一个对象,求值为某个槽位的槽位唯一 ID 编号。_SUN 由 OSPM UI 用于向用户标识槽位。例如,这可用于电池槽位、PCI 槽位、PCMCIA 槽位或可更换舱位槽位,以告知用户每个槽位中有哪些设备。_SUN 求值为一个整数,该数值将用于用户界面。
参数:
无
返回值:
包含槽位唯一 ID 的 Integer
要求 _SUN 值在相同类型的槽位中唯一。还建议在可能的情况下,此编号与物理槽位上印刷的槽位编号一致。
6.1.12. _UID(唯一 ID)
此对象向 OSPM 提供一个跨重启不会改变的逻辑设备 ID。此对象是可选的,但当设备没有其他方式报告持久唯一设备 ID 时,则为必需。对于具有共同 _HID 或 _CID 的所有设备,_UID 必须是唯一的。这是因为设备需要被 OSPM 唯一标识,而 OSPM 可以通过匹配 _HID 或 _CID 来识别设备。无论 OSPM 使用 _HID 还是 _CID,唯一性匹配都必须成立。OSPM 通常使用该唯一设备 ID 来确保设备特定信息(例如网络协议绑定信息)即使在设备相对位置发生变化时,也仍能为该设备保留。对于大多数集成设备,此对象包含一个唯一标识符。
一般来说,_UID 对象求值为数值或字符串之一。然而,当定义 _HID 为 ACPI0007 的对象(处理器定义对象)时,_UID 对象必须返回一个整数。该整数在 MADT、PPTT 和其他表中用作标识符,以将不可枚举设备连接到处理器对象。在这些情况下,如果使用字符串,则没有机制来连接这些设备。
参数:
无
返回值:
包含唯一 ID 的 Integer 或 String