Función ExGetFirmwareEnvironmentVariable (wdm.h)
La rutina exGetFirmwareEnvironmentVariable obtiene el valor de la variable de entorno de firmware del sistema especificada.
NTSTATUS ExGetFirmwareEnvironmentVariable(
[in] PUNICODE_STRING VariableName,
[in] LPGUID VendorGuid,
[out, optional] PVOID Value,
[in, out] PULONG ValueLength,
[out, optional] PULONG Attributes
);
[in] VariableName
Puntero a una estructura 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 proporcionado por el autor de la llamada Valor. Antes de salir, la rutina escribe en esta ubicación el tamaño, en bytes, del valor de 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 de valor de. 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 Comentarios.
exGetFirmwareEnvironmentVariable devuelve STATUS_SUCCESS si se ejecuta 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 de 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. |
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 disponibles 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 las variables específicas que se usan, consulte la especificación unified extensible firmware interface 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 producirán 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, lo que proporciona 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 en STATUS_NOT_IMPLEMENTED. En una plataforma basada en UEFI, la función 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 null, la rutina escribe los atributos de la variable de entorno de firmware del sistema especificada en la ubicación a la que apunta Atributos. La versión 2.3.1 de la especificación UEFI define los atributos siguientes para las variables de entorno de firmware.
Nombre de 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 Atributos 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.
ExGetFirmwareEnvironmentVariable es el equivalente en modo kernel de la función GetFirmwareEnvironmentVariable de Win32.
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible a partir de Windows 8. |
de la plataforma de destino de | Universal |
encabezado de | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca de | NtosKrnl.lib |
DLL de | NtosKrnl.exe |
irQL | PASSIVE_LEVEL |
ExSetFirmwareEnvironmentVariable