次の方法で共有


GetFirmwareEnvironmentVariableExW 関数 (winbase.h)

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

構文

DWORD GetFirmwareEnvironmentVariableExW(
  LPCWSTR lpName,
  LPCWSTR 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 以降では、User-Mode Driver Framework (UMDF) ドライバーから Unified Extensible Firmware Interface (UEFI) 変数の読み取りもサポートされています。 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 アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winbase.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

ユニバーサル Windows アプリ から UEFI ファームウェア変数にアクセスする

GetFirmwareEnvironmentVariable の

SetFirmwareEnvironmentVariableEx の