SetFirmwareEnvironmentVariableExW 関数 (winbase.h)
指定したファームウェア環境変数の値と、この変数の格納方法と保守方法を示す属性を設定します。
構文
BOOL SetFirmwareEnvironmentVariableExW(
[in] LPCWSTR lpName,
[in] LPCWSTR lpGuid,
[in] PVOID pValue,
[in] DWORD nSize,
[in] DWORD dwAttributes
);
パラメーター
[in] lpName
ファームウェア環境変数の名前。 ポインターを NULL
[in] lpGuid
ファームウェア環境変数の名前空間を表す GUID。 GUID は、"{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" の形式の文字列である必要があります。 システムが GUID ベースの名前空間をサポートしていない場合、このパラメーターは無視されます。 ポインターを NULL
[in] pValue
ファームウェア環境変数の新しい値へのポインター。
[in] nSize
pValue バッファーのサイズ (バイト単位)。 VARIABLE_ATTRIBUTE_APPEND_WRITE、VARIABLE_ATTRIBUTE_AUTHENTICATED_WRITE_ACCESS、またはVARIABLE_ATTRIBUTE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS変数属性 dwAttributesを使用して設定しない限り、この値を 0 に設定すると、この変数が削除されます。
[in] dwAttributes
変数に関連付けられている UEFI 変数属性を設定するビットマスク。 UEFI 仕様 2.3.1、セクション 7.2の
戻り値
関数が成功した場合、戻り値は 0 以外の値になります。
関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError
備考
Windows 10 バージョン 1803 以降では、ユニバーサル Windows アプリは UEFI ファームウェア変数の読み取りと書き込みを行うことができます。 詳細については、「ユニバーサル Windows アプリ から UEFI ファームウェア変数にアクセスする」を参照してください。
Windows 10 バージョン 1803 以降では、User-Mode Driver Framework (UMDF) ドライバーから UEFI ファームウェア変数の読み取りもサポートされています。 UMDF ドライバーからの UEFI ファームウェア変数の書き込みはサポートされていません。
ファームウェア環境変数を記述するには、アプリが実行されているユーザー アカウントに SE_SYSTEM_ENVIRONMENT_NAME 特権が必要です。 ユニバーサル Windows アプリは、管理者アカウントから実行し、「ユニバーサル Windows アプリから UEFI ファームウェア変数にアクセスする
変数の属性を変更する正しい方法は、変数を削除し、異なる属性で再作成することです。
ファームウェア環境変数の正確なセットは、ブート ファームウェアによって決定されます。 これらの環境変数の場所もファームウェアによって指定されます。 たとえば、UEFI ベースのシステムでは、NVRAM には、システムのブート設定を指定するファームウェア環境変数が含まれています。 使用される特定の変数については、UEFI 仕様を参照してください。 UEFI と Windows の詳細については、「UEFI と Windows」を参照してください。
ファームウェア変数は、レガシ BIOS ベースのシステムではサポートされていません。 SetFirmwareEnvironmentVariableEx 関数は、レガシ BIOS ベースのシステムで常に失敗します。また、レガシ BIOS と UEFI の両方をサポートするシステムにレガシ BIOS を使用して Windows がインストールされている場合は、常に失敗します。 これらの条件を識別するには、lpName パラメーターの空の文字列 ("") や、lpGuid パラメーターの "{00000000-0000-0000-0000-000000000000}" などのダミー GUID などのダミーのファームウェア環境名を使用して関数を呼び出します。 レガシ BIOS ベースのシステム、またはレガシ BIOS を使用して Windows がインストールされたレガシ BIOS と UEFI の両方をサポートするシステムでは、この関数はERROR_INVALID_FUNCTIONで失敗します。 UEFI ベースのシステムでは、ダミーの GUID 名前空間が存在しないことを示すために、ERROR_NOACCESSなどのファームウェアに固有のエラーで関数が失敗します。
手記
winbase.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SetFirmwareEnvironmentVariableEx を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8 [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2012 [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winbase.h (Windows.h を含む) |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |
関連項目
ユニバーサル Windows アプリ から UEFI ファームウェア変数にアクセスする
GetFirmwareEnvironmentVariableEx の
SetFirmwareEnvironmentVariable の