GetFirmwareEnvironmentVariableExW

指定したファームウェア環境変数の値とその属性を取得する。(Unicode)

GetFirmwareEnvironmentVariableExW lpName, lpGuid, pBuffer, nSize, pdwAttribubutes

lpName : [wstr] ファームウェア環境変数の名前。ポインタは NULL であってはならない。
lpGuid : [wstr] ファームウェア環境変数の名前空間を表す GUID。GUID は "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" 形式の文字列でなければならず、'x' は 16 進値を表す。ポインタは NULL であってはならない。
pBuffer : [intptr] 指定したファームウェア環境変数の値を受け取るバッファへのポインタ。
nSize : [int] pValue バッファのサイズ(バイト単位)。
pdwAttribubutes : [var] 変数に関連付けられた UEFI 変数属性を識別するビットマスク。ビットマスクの定義は SetFirmwareEnvironmentVariableEx を参照。

(プラグイン / モジュール : kernel32.dll)

解説

指定したファームウェア環境変数の値とその属性を取得する。(Unicode)

[戻り値]
関数が成功した場合の戻り値は pValue バッファに格納されたバイト数である。失敗した場合の戻り値は 0
である。拡張エラー情報を取得するには GetLastError を呼ぶ。発生し得るエラーコードには
ERROR_INVALID_FUNCTION が含まれる。

[備考]
Windows 10 バージョン 1803 以降、ユニバーサル Windows アプリは UEFI
ファームウェア変数を読み書きできる。詳細は Access UEFI firmware variables from a Universal
Windows App を参照。UEFI ファームウェア環境変数を読むには、アプリを実行するユーザーアカウントに
SE_SYSTEM_ENVIRONMENT_NAME 特権が必要である。ユニバーサル Windows
アプリは管理者アカウントから実行され、Access UEFI firmware variables from a Universal
Windows App に記載された要件に従う必要がある。Windows 10 バージョン 1803 以降、UEFI 変数の読み取りは
User-Mode Driver Framework (UMDF) ドライバからもサポートされている。UMDF ドライバからの UEFI
変数の書き込みはサポートされていない。ファームウェア環境変数の正確なセットはブートファームウェアによって決まる。これらの環境変数の場所もファームウェアにより指定される。例えば
UEFI ベースのシステムでは NVRAM
がシステムブート設定を指定するファームウェア環境変数を保持する。使用される具体的な変数については UEFI 仕様を参照。UEFI と
Windows の詳細は UEFI and Windows を参照。ファームウェア変数はレガシ BIOS
ベースのシステムではサポートされない。GetFirmwareEnvironmentVariableEx 関数はレガシ BIOS
ベースのシステム、またはレガシ BIOS と UEFI の両方をサポートするシステムで Windows がレガシ BIOS
でインストールされている場合は常に失敗する。これらの状況を識別するには、lpName に空文字列 ("")
などのダミーのファームウェア環境名、lpGuid に "{00000000-0000-0000-0000-000000000000}"
などのダミー GUID を指定して関数を呼ぶ。レガシ BIOS ベースのシステム、またはレガシ BIOS と UEFI
の両方をサポートするシステムで Windows がレガシ BIOS でインストールされている場合、関数は
ERROR_INVALID_FUNCTION で失敗する。UEFI ベースのシステムでは、関数はダミーの GUID
名前空間が存在しないことを示すため、ERROR_NOACCESS
のようなファームウェア固有のエラーで失敗する。バックアップアプリを作成する場合、本関数を使ってシステムのすべてのブート設定を保存し、必要に応じて
SetFirmwareEnvironmentVariable 関数で復元できる。
> [!NOTE] > winbase.h ヘッダは、UNICODE プリプロセッサ定数の定義に基づいて本関数の ANSI 版または
Unicode 版を自動選択するエイリアスとして GetFirmwareEnvironmentVariableEx
を定義する。エンコード非依存のエイリアスとエンコード依存のコードを混在させると、コンパイル時または実行時のエラーにつながる不一致が発生する可能性がある。詳細は
[Conventions for Function
Prototypes](/windows/win32/intl/conventions-for-function-prototypes)
を参照。

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs