Compartir a través de


Función ExGetFirmwareEnvironmentVariable (wdm.h)

La rutina ExGetFirmwareEnvironmentVariable obtiene el valor de la variable de entorno del firmware del sistema especificada.

Sintaxis

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

Parámetros

[in] VariableName

Puntero a una estructura de UNICODE_STRING que contiene el nombre de la variable de entorno especificada.

[in] VendorGuid

Puntero a un GUID que identifica al proveedor asociado a la variable de entorno especificada. Las variables de entorno se agrupan en espacios de nombres en función de sus GUID de proveedor. Es posible que algunas plataformas de hardware no admitan GUID de proveedor. En estas plataformas, todas las variables se agrupan en un solo espacio de nombres común y se omite el parámetro VendorGuid .

[out, optional] Value

Puntero a un búfer asignado por el autor de la llamada al que la rutina escribe el valor de la variable de entorno especificada.

[in, out] ValueLength

Puntero a una ubicación que contiene el tamaño del búfer. En la entrada, la ubicación a la que apunta este parámetro contiene el tamaño, en bytes, del búfer value proporcionado por el autor de la llamada. Antes de salir, la rutina escribe en esta ubicación el tamaño, en bytes, del valor de la variable. Si la rutina devuelve STATUS_SUCCESS, el valor de salida *ValueLength es el número de bytes de datos escritos en el búfer Valor . Si la rutina devuelve STATUS_BUFFER_TOO_SMALL, *ValueLength es el tamaño de búfer necesario.

[out, optional] Attributes

Puntero a una ubicación en la que la rutina escribe los atributos de la variable de entorno especificada. Este parámetro es opcional y se puede establecer en NULL si el autor de la llamada no necesita los atributos. Para obtener más información, vea la sección Comentarios.

Valor devuelto

ExGetFirmwareEnvironmentVariable devuelve STATUS_SUCCESS si se realiza correctamente. Los valores devueltos posibles incluyen los siguientes códigos de estado de error.

Código devuelto Descripción
STATUS_INSUFFICIENT_RESOURCES Los recursos del sistema disponibles no son suficientes para completar la operación solicitada.
STATUS_BUFFER_TOO_SMALL El búfer valor es demasiado pequeño.
STATUS_VARIABLE_NOT_FOUND La variable solicitada no existe.
STATUS_INVALID_PARAMETER Uno de los parámetros no es válido.
STATUS_NOT_IMPLEMENTED Esta rutina no se admite en esta plataforma.
STATUS_UNSUCCESSFUL El firmware devolvió un error no reconocido.

Comentarios

Las variables de entorno de firmware del sistema contienen valores de datos que se pasan entre el entorno de firmware de arranque implementado en la plataforma de hardware y los cargadores del sistema operativo y otro software que se ejecuta en el entorno de firmware.

El conjunto de variables de entorno de firmware que está disponible en una plataforma de hardware depende del firmware de arranque. El firmware también especifica la ubicación de estas variables de entorno. Por ejemplo, en una plataforma basada en UEFI, NVRAM contiene variables de entorno de firmware que especifican la configuración de arranque del sistema. Para obtener información sobre variables específicas usadas, vea Unified Extensible Firmware Interface Specification en el sitio web de UEFI . Para obtener más información sobre UEFI y Windows, consulte UEFI y Windows.

Las variables de entorno de firmware no se admiten en una plataforma heredada basada en BIOS. Las llamadas a ExGetFirmwareEnvironmentVariable siempre producen un error en una plataforma heredada basada en BIOS; También producen un error si Windows se instaló con el BIOS heredado en una plataforma que admite bios heredado y UEFI. Para identificar estas condiciones, use primero uuidgen o una herramienta similar para generar un GUID único aleatorio estáticamente. A continuación, llame a esta rutina para buscar un nombre de variable específico, proporcionando ese GUID como parámetro VendorGuid .

En una plataforma heredada basada en BIOS, o en una plataforma que admita BIOS heredado y UEFI, pero en la que Windows se instaló con el BIOS heredado, la función producirá un error con STATUS_NOT_IMPLEMENTED. En una plataforma basada en UEFI, se producirá un error específico del firmware, como STATUS_VARIABLE_NOT_FOUND, para indicar que el espacio de nombres GUID ficticio no existe.

Si el autor de la llamada especifica un parámetro Attributes distinto de NULL, la rutina escribe los atributos de la variable de entorno de firmware del sistema especificada en la ubicación a la que apunta Attributes. La versión 2.3.1 de la especificación UEFI define los siguientes atributos para las variables de entorno de firmware.

Nombre de la variable Valor
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

Estos valores de atributo se definen como bits de marca. El valor escrito en la variable ULONG a la que apunta Attributes es cero o el OR bit a bit de uno o varios atributos de la tabla anterior. Para obtener más información, consulte la especificación UEFI en el sitio web de UEFI .

Si crea un almacén de datos de copia de seguridad, puede usar esta función para guardar toda la configuración de arranque de la plataforma para que se puedan restaurar llamando a la rutina ExSetFirmwareEnvironmentVariable si es necesario.

ExGetFirmwareEnvironmentVariable es el equivalente en modo kernel de la función GetFirmwareEnvironmentVariable de Win32.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 8.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Consulte también

ExSetFirmwareEnvironmentVariable

GetFirmwareEnvironmentVariable

UNICODE_STRING