如何使用 _OSI 识别 ACPI 中的 Windows 版本
本主题介绍如何使用高级配置和电源接口 (ACPI) 源语言 (ASL) 中的 _OSI 方法标识主机操作系统。 通过使用此方法,ASL 编写人员可以创建支持未来操作系统版本的固件,并使操作系统能够根据请求的接口级别更改行为。
此信息适用于以下操作系统:
Windows 11 版本 22H2
Windows 11
Windows 10 版本 2004
Windows 10 版本 1903
Windows 10 版本 1809
Windows 10 版本 1803
Windows 10 版本 1709
Windows 10 版本 1703
Windows 10 版本 1607
Windows Server Technical Preview
Windows 10
Windows Server 2012 R2
Windows 8.1
Windows Server 2012
Windows 8
Windows Server 2008 R2
Windows 7
Windows Server 2008
Windows Vista
Windows Server 2003
Windows XP
_OSI 方法
所有最新版本的 Windows 操作系统都支持高级配置和电源接口 (ACPI) 规范的组件。 ACPI 规范定义了解释语言 ACPI 源语言 (ASL),使操作系统能够执行固件提供的电源管理和配置控制方法。 为了提高 ASL 编写人员识别主机操作系统版本的能力,ASL 提供操作系统接口级别 (_OSI)。
通过使用 _OSI 方法,ASL 编写人员可以轻松确定主机操作系统支持的 ACPI 接口的版本。 此版本控制方法提供了一种用于创建固件的解决方案,该固件可以支持未来的操作系统,并使操作系统能够根据请求的接口级别更改行为。
已定义 _OSI
_OSI 方法具有一个参数和一个返回值。 该参数是一个字符串,由每个操作系统定义并为每个操作系统定义。 如果接口不受支持,则返回值为 0x00000000;如果接口受支持,则返回值为 0xFFFFFFFF。
ACPI 规范的最新版本已将 _OSI 方法的用例扩展到主机操作系统版本标识之外。
但是,Windows 仅支持将 _OSI 用于标识系统上运行的 Windows 的主机版本。
_OSI 方法的定义如下:
- _OSI - 操作系统接口
参数
由每个操作系统定义和为每个操作系统定义的字符串。 例如:
Windows 8.1 和 Windows Server 2012 R2 的“Windows 2013”
Windows 8 和 Windows Server 2012 的“Windows 2012”
Windows 7 和 Windows Server 2008 R2 的“Windows 2009”
Windows XP 的“Windows 2001”
Windows Server 2003 的“Windows 2001.1”
返回值
返回值如下:
如果操作系统不支持参数中的版本,则为 0x00000000。
如果操作系统支持参数中的版本,则为 0xFFFFFFFF。
Windows 的 _OSI 参数详细信息
下表列出了 ASL 可以使用相应的 _OSI 字符串标识的 Windows 版本。
如果 _OSI 方法的参数指定早期版本的 Windows,Windows 操作系统将返回 0xFFFFFFFF。 例如,Windows 7 为“Windows 2009”((Windows 7) 和“Windows 2006”(Windows Vista) 均返回 0xFFFFFFFF。
Windows 操作系统的 _OSI 字符串
OSI 字符串 | 目标 OS |
---|---|
Windows 2000 | Windows 2000 |
Windows 2001 | Windows XP |
windows 2001 SP1 | Windows XP SP1 |
Windows 2001.1 | Windows Server 2003 |
windows 2001 SP2 | Windows XP SP2 |
windows 2001.1 SP1 | Windows Server 2003 SP1 |
Windows 2006 | Windows Vista |
windows 2006 SP1 | Windows Vista SP1 |
Windows 2006.1 | Windows Server 2008 |
Windows 2009 | Windows 7、Win Server 2008 R2 |
Windows 2012 | Windows 8、Win Server 2012 |
Windows 2013 | Windows 8.1 |
Windows 2015 | Windows 10 |
Windows 2016 | Windows 10 版本 1607 |
Windows 2017 | Windows 10 版本 1703 |
Windows 2017.2 | Windows 10 版本 1709 |
Windows 2018 | Windows 10 版本 1803 |
Windows 2018.2 | Windows 10 版本 1809 |
Windows 2019 | Windows 10 版本 1903 |
Windows 2020 | Windows 10 版本 2004 |
Windows 2021 | Windows 11 |
Windows 2022 | Windows 11 版本 22H2 |
实现说明
将标识操作系统的例程放在 _SB 范围下的 _INI 方法中,以便 _OSI 可以尽早运行。
此位置很重要,因为操作系统根据 _OSI 方法的字符串参数提供功能。