Поделиться через


Функция ExGetFirmwareEnvironmentVariable (wdm.h)

Подпрограмма ExGetFirmwareEnvironmentVariable получает значение указанной переменной среды встроенного ПО системы.

Синтаксис

NTSTATUS ExGetFirmwareEnvironmentVariable(
  [in]            PUNICODE_STRING VariableName,
  [in]            LPGUID          VendorGuid,
  [out, optional] PVOID           Value,
  [in, out]       PULONG          ValueLength,
  [out, optional] PULONG          Attributes
);

Параметры

[in] VariableName

Указатель на структуру UNICODE_STRING, содержащую имя указанной переменной среды.

[in] VendorGuid

Указатель на GUID, определяющий поставщика, связанного с указанной переменной среды. Переменные среды группируются в пространства имен на основе идентификаторов GUID поставщика. Некоторые аппаратные платформы могут не поддерживать идентификаторы GUID поставщика. На этих платформах все переменные группируются в одно, общее пространство имен, а параметр VendorGuid игнорируется.

[out, optional] Value

Указатель на выделенный вызывающим буфером, в который подпрограмма записывает значение указанной переменной среды.

[in, out] ValueLength

Указатель на расположение, содержащее размер буфера. При входе расположение, на которое указывает этот параметр, содержит размер в байтах указанного вызывающего буфера значения. Перед выходом подпрограмма записывает в это расположение размер в байтах значения переменной. Если подпрограмма возвращает STATUS_SUCCESS, значение выходных данныхЗначение * ValueLength — это количество байтов данных, записанных в буфер значение. Если подпрограмма возвращает STATUS_BUFFER_TOO_SMALL, *ValueLength является обязательным размером буфера.

[out, optional] Attributes

Указатель на расположение, в которое подпрограмма записывает атрибуты указанной переменной среды. Этот параметр является необязательным и может иметь значение NULL, если вызывающий объект не нуждается в атрибутах. Дополнительные сведения см. в разделе "Примечания".

Возвращаемое значение

ExGetFirmwareEnvironmentVariable возвращает STATUS_SUCCESS в случае успешного выполнения. Возможные возвращаемые значения включают следующие коды состояния ошибки.

Возвращаемый код Описание
STATUS_INSUFFICIENT_RESOURCES Доступные системные ресурсы недостаточно для выполнения запрошенной операции.
STATUS_BUFFER_TOO_SMALL Буфер значения слишком мал.
STATUS_VARIABLE_NOT_FOUND Запрошенная переменная не существует.
STATUS_INVALID_PARAMETER Один из параметров недопустим.
STATUS_NOT_IMPLEMENTED Эта подпрограмма не поддерживается на этой платформе.
STATUS_UNSUCCESSFUL Встроенное ПО вернуло нераспознанную ошибку.

Замечания

Переменные среды среды встроенного ПО системы содержат значения данных, передаваемые между средой встроенного ПО загрузки, реализованной на аппаратной платформе, и загрузчиками операционной системы и другим программным обеспечением, которое выполняется в среде встроенного ПО.

Набор переменных среды встроенного ПО, доступных на аппаратной платформе, зависит от встроенного ПО загрузки. Расположение этих переменных среды также указывается встроенного ПО. Например, на платформе на основе UEFI NVRAM содержит переменные среды встроенного ПО, указывающие параметры загрузки системы. Сведения об определенных переменных, используемых, см. на веб-сайте веб-сайте UE FI унифицированного расширяемого интерфейса встроенного ПО. Дополнительные сведения о UEFI и Windows см. в UEFI и Windows.

Переменные среды встроенного ПО не поддерживаются на устаревшей платформе на основе BIOS. Вызовы ExGetFirmwareEnvironmentVariable всегда завершаются сбоем на устаревшей платформе на основе BIOS; Они также завершаются ошибкой, если Windows была установлена с помощью устаревшей BIOS на платформе, поддерживающей как устаревшие BIOS, так и UEFI. Чтобы определить эти условия, сначала используйте uuidgen или аналогичное средство для создания случайного уникального GUID статически. Затем вызовите эту подпрограмму для поиска определенного имени переменной, указав этот GUID в качестве параметра VendorGuid.

На устаревшей платформе на основе BIOS или на платформе, поддерживающей как устаревшие BIOS, так и UEFI, но в которых Windows была установлена с помощью устаревшей BIOS, функция завершится ошибкой с STATUS_NOT_IMPLEMENTED. На платформе на основе UEFI функция завершится ошибкой, определенной для встроенного ПО, например STATUS_VARIABLE_NOT_FOUND, чтобы указать, что фиктивное пространство имен GUID не существует.

Если вызывающий объект задает параметр атрибутов, отличных от NULL,, подпрограмма записывает атрибуты указанной переменной среды встроенного ПО системы в расположение, на которое указывает Атрибуты. Версия 2.3.1 спецификации UEFI определяет следующие атрибуты для переменных среды встроенного ПО.

Имя переменной Ценность
EFI_VARIABLE_NON_VOLATILE 0x00000001
EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008
EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010
EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020
EFI_VARIABLE_APPEND_WRITE 0x00000040

Эти значения атрибутов определяются как биты флагов. Значение, записанное в переменную ULONG, на которую указывает Атрибуты, равно нулю или побитовой или одной или нескольких атрибутов в предыдущей таблице. Дополнительные сведения см. в спецификации UEFI на веб-сайте UEFI.

Если вы создаете хранилище данных резервного копирования, эту функцию можно использовать для сохранения всех параметров загрузки для платформы, чтобы их можно было восстановить, вызвав подпрограмму ExSetFirmwareEnvironmentVariable.

ExGetFirmwareEnvironmentVariable является эквивалентом режима ядра функции Win32 GetFirmwareEnvironmentVariable.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 8.
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

См. также

ExSetFirmwareEnvironmentVariable

GetFirmwareEnvironmentVariable

UNICODE_STRING