指定したファームウェア環境変数の値を設定する。(Unicode)
SetFirmwareEnvironmentVariableW lpName, lpGuid, pValue, nSize
lpName : [wstr] ファームウェア環境変数の名前。ポインタは NULL であってはならない。
lpGuid : [wstr] ファームウェア環境変数の名前空間を表す GUID。GUID は "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" 形式の文字列でなければならない。システムが GUID ベースの名前空間をサポートしない場合は無視される。
pValue : [intptr] ファームウェア環境変数の新しい値へのポインタ。
nSize : [int] pBuffer バッファのサイズ (バイト単位)。このパラメータがゼロの場合、ファームウェア環境変数は削除される。
(プラグイン / モジュール : kernel32.dll)
指定したファームウェア環境変数の値を設定する。(Unicode)
[戻り値]
関数が成功した場合、戻り値は非ゼロである。失敗した場合はゼロである。拡張エラー情報を取得するには GetLastError
を呼び出す。エラーコードには ERROR_INVALID_FUNCTION が含まれる可能性がある。
[備考]
Windows 10 バージョン 1803 以降、ユニバーサル Windows アプリは UEFI
ファームウェア変数の読み書きが可能である。詳細は「ユニバーサル Windows アプリからの UEFI
ファームウェア変数アクセス」を参照。Windows 10 バージョン 1803 以降、UEFI ファームウェア変数の読み取りは UMDF
ドライバからもサポートされる。UMDF
ドライバからの書き込みはサポートされない。ファームウェア環境変数を書き込むには、アプリを実行中のユーザーアカウントが
SE_SYSTEM_ENVIRONMENT_NAME 特権を持つ必要がある。ユニバーサル Windows
アプリは管理者アカウントから実行し、「ユニバーサル Windows アプリからの UEFI
ファームウェア変数アクセス」で概説される要件に従う必要がある。正確なファームウェア環境変数の集合は起動ファームウェアによって決まる。これらの環境変数の位置もファームウェアが指定する。例えば
UEFI ベースのシステムでは、NVRAM にシステム起動設定を指定するファームウェア環境変数が含まれる。UEFI 仕様・「UEFI と
Windows」を参照。ファームウェア変数はレガシー BIOS
ベースのシステムではサポートされない。SetFirmwareEnvironmentVariable 関数はレガシー BIOS
ベースのシステム、またはレガシー BIOS と UEFI の両方をサポートするシステムに Windows がレガシー BIOS
でインストールされている場合、常に失敗する。これらの条件を識別するには、lpName にダミーのファームウェア環境名 (例: 空文字列
"")、lpGuid にダミー GUID (例: "{00000000-0000-0000-0000-000000000000}")
を指定して関数を呼ぶ。レガシー BIOS ベースのシステム、またはレガシー BIOS で Windows
がインストールされている両対応システムでは ERROR_INVALID_FUNCTION で失敗する。UEFI ベースのシステムではダミー
GUID 名前空間が存在しないことを示すファームウェア固有のエラー (ERROR_NOACCESS など)
で失敗する。SetFirmwareEnvironmentVariable は
ExSetFirmwareEnvironmentVariable カーネルモードルーチンのユーザーモード相当である。
> [!NOTE] > winbase.h ヘッダは SetFirmwareEnvironmentVariable を、UNICODE
プリプロセッサ定数の定義に応じて ANSI 版または Unicode
版を自動選択するエイリアスとして定義する。エンコーディング中立なエイリアスと中立でないコードを混在させると、コンパイルエラーや実行時エラーを引き起こすことがある。詳細は
[関数プロトタイプの規約](/windows/win32/intl/conventions-for-function-prototypes)
を参照。
| プラグイン / モジュール | kernel32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_kernel32_gen2.hs |