GetFirmwareEnvironmentVariableExW 函数 (winbase.h)
检索指定固件环境变量及其属性的值。
语法
DWORD GetFirmwareEnvironmentVariableExW(
LPCWSTR lpName,
LPCWSTR lpGuid,
PVOID pBuffer,
DWORD nSize,
PDWORD pdwAttribubutes
);
参数
lpName
固件环境变量的名称。 指针不得 NULL。
lpGuid
表示固件环境变量命名空间的 GUID。 GUID 必须是格式为“{xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxx}”格式的字符串,其中“x”表示十六进制值。 指针不得 NULL。
pBuffer
指向接收指定固件环境变量值的缓冲区的指针。
nSize
pValue 缓冲区的大小(以字节为单位)。
pdwAttribubutes
标识与变量关联的 UEFI 变量属性的位掩码。 有关位掩码定义,请参阅 SetFirmwareEnvironmentVariableEx。
返回值
如果函数成功,则返回值是存储在 pValue 缓冲区中的字节数。
如果函数失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError。 可能的错误代码包括ERROR_INVALID_FUNCTION。
言论
从 Windows 10 版本 1803 开始,通用 Windows 应用可以读取和写入 UEFI 固件变量。 有关详细信息,请参阅 从通用 Windows 应用 访问 UEFI 固件变量。
若要读取 UEFI 固件环境变量,应用所运行的用户帐户必须具有 SE_SYSTEM_ENVIRONMENT_NAME 权限。 通用 Windows 应用必须从管理员帐户运行,并遵循通用 Windows 应用中
从 Windows 10 版本 1803 开始,User-Mode 驱动程序框架(UMDF)驱动程序也支持读取统一可扩展固件接口(UEFI)变量。 不支持从 UMDF 驱动程序编写 UEFI 变量。
确切的固件环境变量集由启动固件确定。 这些环境变量的位置也由固件指定。 例如,在基于 UEFI 的系统上,NVRAM 包含指定系统启动设置的固件环境变量。 有关使用的特定变量的信息,请参阅 UEFI 规范。 有关 UEFI 和 Windows 的详细信息,请参阅 UEFI 和 Windows。
基于 BIOS 的旧系统不支持固件变量。 GetFirmwareEnvironmentVariableEx 函数始终在基于 BIOS 的旧系统上失败,或者 Windows 是在支持旧 BIOS 和 UEFI 的系统上使用旧版 BIOS 安装的。 若要识别这些条件,请使用虚拟固件环境名称(例如空字符串(“”)为 lpName 参数调用函数,并为 lpGuid 参数调用虚拟 GUID,例如“{00000000-0000-0000-0000-000000000000}”。 在基于旧版 BIOS 的系统上,或在支持使用旧版 BIOS 安装 Windows 的旧版 BIOS 和 UEFI 的系统上,该函数将失败并ERROR_INVALID_FUNCTION。 在基于 UEFI 的系统上,该函数将失败,并出现特定于固件的错误,例如ERROR_NOACCESS,以指示虚拟 GUID 命名空间不存在。
如果要创建备份应用程序,可以使用此函数保存系统的所有启动设置,以便在需要时可以使用 SetFirmwareEnvironmentVariable 函数还原这些设置。
注意
winbase.h 标头将 GetFirmwareEnvironmentVariableEx 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 8 [桌面应用 |UWP 应用] |
支持的最低服务器 | Windows Server 2012 [桌面应用 |UWP 应用] |
目标平台 | 窗户 |
标头 | winbase.h (包括 Windows.h) |
库 | Kernel32.lib |
DLL | Kernel32.dll |
另请参阅
从通用 Windows 应用 访问 UEFI 固件变量