19.6.12. Concatenate(连接数据)
语法 :
Concatenate ( Source1, Source2, Result ) => Buffer or String
参数
Source1 和 Source2 必须分别求值为任意有效的 ACPI 对象。对于基本数据对象类型(Integer、String 或 Buffer),在连接中使用对象的值。对于所有其他对象类型(见下表),会创建一个包含对象名称(类型)的字符串对象。然后按照“连接数据类型”中的规则连接该字符串对象。
Source1 的数据类型决定了 Source2 所需的类型以及结果对象的类型。如有必要(且可能),会将 Source2 隐式转换为与 Source1 匹配的类型。
说明
将 Source2 连接到 Source1,并且结果数据可选地存储到 Result 中。
表 19.30 连接数据类型
| Source1 数据类型 | Source2 数据类型(转换后的类型) | 结果数据类型 |
|---|---|---|
| Integer | Integer/String/Buffer \(\rightarrow\) Integer | Buffer |
| String | Integer/String/Buffer /所有其他类型 \(\rightarrow\) String | String |
| Buffer | Integer/String/Buffer /所有其他类型 \(\rightarrow\) Buffer | Buffer |
| 所有其他类型 \(\rightarrow\) String | Integer/String/Buffer /所有其他类型 \(\rightarrow\) String | String |
对于 Source1 /Integer 的情况,无法隐式转换为 Integer 的 String 或 Buffer 将产生致命错误。
表 19.31 连接对象类型
| 数据对象类型 | 名称 | 解析为的值 |
|---|---|---|
| 1 | Integer | 对象的 Integer 值 |
| 2 | String | 对象的 String 值 |
| 3 | Buffer | 对象的 Buffer 值 |
| 其他对象类型 | 名称 | 解析为字符串 |
| 0 | 未初始化 | “[Uninitialized Object]” |
| 4 | Package | “[Package]” |
| 5 | Field Unit | “[Field]” |
| 6 | Device | “[Device]” |
| 7 | Event | “[Event]” |
| 8 | Control Method | “[Control Method]” |
| 9 | Mutex | “[Mutex]” |
| 10 | Operation Region | “[Operation Region]” |
| 11 | Power Resource | “[Power Resource]” |
| 12 | Processor | “[Processor]” |
| 13 | Thermal Zone | “[Thermal Zone]” |
| 14 | Buffer Field | “[Buffer Field]” |
| 15 | Reserved | |
| 16 | Debug Object | “[Debug Object]” |
示例 :
Device (DEVX) {}
Name (PKGX, Package () {1,2,3,"Battery1"})
Method (MTHX, 2)
{
Concatenate ("My Object: ", DEVX, Debug) // MyObject: Device
Printf ("PKGX %o contains %o elements\n", PKGX, SizeOf (PKGX))
Printf ("Arg0: %o\n", Arg0)
}