GetFirmwareEnvironmentVariableExA 関数 (winbase.h)
指定したファームウェア環境変数とその属性の値を取得します。
構文
DWORD GetFirmwareEnvironmentVariableExA(
LPCSTR lpName,
LPCSTR lpGuid,
PVOID pBuffer,
DWORD nSize,
PDWORD pdwAttribubutes
);
パラメーター
lpName
ファームウェア環境変数の名前。 ポインターは NULL にすることはできません。
lpGuid
ファームウェア環境変数の名前空間を表す GUID。 GUID は、"{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" という形式の文字列である必要があります。ここで、'x' は 16 進数の値を表します。 ポインターは NULL にすることはできません。
pBuffer
指定したファームウェア環境変数の値を受け取るバッファーへのポインター。
nSize
pValue バッファーのサイズ (バイト単位)。
pdwAttribubutes
変数に関連付けられている UEFI 変数属性を識別するビットマスク。 ビットマスク定義については 、「SetFirmwareEnvironmentVariableEx 」を参照してください。
戻り値
関数が成功した場合、戻り値は pValue バッファーに格納されているバイト数です。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。 考えられるエラー コードには、ERROR_INVALID_FUNCTIONが含まれます。
注釈
Windows 10 バージョン 1803 以降、ユニバーサル Windows アプリは UEFI ファームウェア変数の読み取りと書き込みを行うことができます。 詳細については、「 ユニバーサル Windows アプリから UEFI ファームウェア変数にアクセス する」を参照してください。
UEFI ファームウェア環境変数を読み取るために、アプリが実行されているユーザー アカウントに SE_SYSTEM_ENVIRONMENT_NAME 特権が必要です。 ユニバーサル Windows アプリは管理者アカウントから実行し、「 ユニバーサル Windows アプリから UEFI ファームウェア変数にアクセスする」で説明されている要件に従う必要があります。
Windows 10 バージョン 1803 以降では、統合拡張ファームウェア インターフェイス (UEFI) 変数の読み取りも、User-Mode Driver Framework (UMDF) ドライバーからサポートされています。 UMDF ドライバーからの UEFI 変数の書き込みはサポートされていません。
ファームウェア環境変数の正確なセットは、ブート ファームウェアによって決まります。 これらの環境変数の場所は、ファームウェアによっても指定されます。 たとえば、UEFI ベースのシステムでは、NVRAM にはシステム ブート設定を指定するファームウェア環境変数が含まれています。 使用される特定の変数の詳細については、 UEFI の仕様に関するページを参照してください。 UEFI と Windows の詳細については、「 UEFI と Windows」を参照してください。
ファームウェア変数は、レガシ BIOS ベースのシステムではサポートされていません。 GetFirmwareEnvironmentVariableEx 関数は、レガシ 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 など) で失敗します。
バックアップ アプリケーションを作成する場合は、必要に応じて SetFirmwareEnvironmentVariable 関数を使用して復元できるように、この関数を使用してシステムのすべてのブート設定を保存できます。
注意
winbase.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetFirmwareEnvironmentVariableEx を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |
関連項目
ユニバーサル Windows アプリから UEFI ファームウェア変数にアクセスする