如何使用 _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 方法的字符串参数提供功能。

其他资源

高级配置和电源接口规范