_OSI を使用して ACPI で Windows バージョンを識別する方法
このトピックでは、Advanced Configuration and Power Interface (ACPI) ソース言語 (ASL) の _OSI メソッドを使用して、ホスト オペレーティング システムを識別する方法について説明します。 この方法を使用すると、ASL ライターは、将来のオペレーティング システム バージョンをサポートするファームウェアを作成し、要求されたインターフェイス レベルに基づいてオペレーティング システムの動作を変更できます。
このドキュメントに記載された情報の対象となるオペレーティング システムは次のとおりです。
Windows 11、 バージョン 22H2
Windows 11
Windows 10 バージョン 2004
Windows 10 Version 1903
Windows 10 Version 1809
Windows 10 Version 1803
Windows 10 Version 1709
Windows 10 Version 1703
Windows 10 Version 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 オペレーティング システムのすべての最新バージョンでは、Advanced Configuration and Power Interface (ACPI) 仕様のコンポーネントがサポートされています。 ACPI 仕様では、解釈される言語である ACPI ソース言語 (ASL) を定義して、オペレーティング システムが電源管理と構成のためにファームウェアで提供される制御メソッドを実行できるようにします。 ASL ライターがホスト オペレーティング システムのバージョンを識別する機能を向上させるために、ASL はオペレーティング システム インターフェイス レベル (_OSI) を提供します。
ASL ライターは _OSI メソッドを使用すると、ホスト オペレーティング システムがサポートする ACPI インターフェイスのバージョンを簡単に判断できます。 このバージョン管理方法は、将来のオペレーティング システムをサポートし、オペレーティング システムが要求されたインターフェイス レベルに基づいて動作を変更できるようにするファームウェアを作成するためのソリューションを提供します。
_OSI が定義されている場合
_OSI メソッドには、1 つの引数と 1 つの戻り値があります。 引数は、オペレーティング システムごとに定義される文字列です。 戻り値は、インターフェイスがサポートされていない場合は 0x00000000、インターフェイスがサポートされている場合は 0xFFFFFFFF です。
ACPI 仕様の最近のバージョンでは、ホスト オペレーティング システムのバージョン識別を超えて、_OSI メソッドのユース ケースが拡張されています。
ただし、Windows では、システム上で実行されている Windows のホスト バージョンを識別する場合にのみ、_OSI がサポートされます。
_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 引数の詳細
次の表に、対応する _OSI 文字列を使用して ASL が識別できる Windows のバージョンを示します。
Windows オペレーティング システムは、_OSI メソッドの引数で以前のバージョンの 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 サーバー 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 Version 1607 |
Windows 2017 | Windows 10 Version 1703 |
Windows 2017.2 | Windows 10 Version 1709 |
Windows 2018 | Windows 10 Version 1803 |
Windows 2018.2 | Windows 10 Version 1809 |
Windows 2019 | Windows 10 Version 1903 |
Windows 2020 | Windows 10 バージョン 2004 |
Windows 2021 | Windows 11 |
Windows 2022 | Windows 11、 バージョン 22H2 |
実装に関する注意事項
_OSI ができるだけ早く実行できるように、オペレーティング システムを識別するルーチンを _INI メソッドの_SB スコープの下に配置します。
オペレーティング システムでは、_OSI メソッドの文字列引数に基づいて機能を使用できるため、この配置は重要です。