Función SetFirmwareEnvironmentVariableExW (winbase.h)

Establece el valor de la variable de entorno de firmware especificada y los atributos que indican cómo se almacena y mantiene esta variable.

Sintaxis

BOOL SetFirmwareEnvironmentVariableExW(
  [in] LPCWSTR lpName,
  [in] LPCWSTR lpGuid,
  [in] PVOID   pValue,
  [in] DWORD   nSize,
  [in] DWORD   dwAttributes
);

Parámetros

[in] lpName

Nombre de la variable de entorno de firmware. El puntero no debe ser NULL.

[in] lpGuid

GUID que representa el espacio de nombres de la variable de entorno de firmware. El GUID debe ser una cadena con el formato "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}". Si el sistema no admite espacios de nombres basados en GUID, se omite este parámetro. El puntero no debe ser NULL.

[in] pValue

Puntero al nuevo valor de la variable de entorno de firmware.

[in] nSize

Tamaño del búfer pValue , en bytes. A menos que el VARIABLE_ATTRIBUTE_APPEND_WRITE, VARIABLE_ATTRIBUTE_AUTHENTICATED_WRITE_ACCESS o VARIABLE_ATTRIBUTE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS atributo de variable se establezca a través de dwAttributes, establecer este valor en cero dará lugar a la eliminación de esta variable.

[in] dwAttributes

Máscara de bits para establecer atributos de variable UEFI asociados a la variable . Consulte también UEFI Spec 2.3.1, Sección 7.2.

Valor Significado
VARIABLE_ATTRIBUTE_NON_VOLATILE
0x00000001
La variable de entorno de firmware se almacena en memoria no volátil (por ejemplo, NVRAM).
VARIABLE_ATTRIBUTE_BOOTSERVICE_ACCESS
0x00000002
Se puede acceder a la variable de entorno de firmware durante el servicio de arranque.
VARIABLE_ATTRIBUTE_RUNTIME_ACCESS
0x00000004
Se puede acceder a la variable de entorno de firmware en tiempo de ejecución.
Nota Las variables con este conjunto de atributos también deben tener VARIABLE_ATTRIBUTE_BOOTSERVICE_ACCESS establecer.
 
VARIABLE_ATTRIBUTE_HARDWARE_ERROR_RECORD
0x00000008
Indica errores relacionados con el hardware encontrados en tiempo de ejecución.
VARIABLE_ATTRIBUTE_AUTHENTICATED_WRITE_ACCESS
0x00000010
Indica un requisito de autenticación que se debe cumplir antes de escribir en esta variable de entorno de firmware. Para obtener más información, vea UEFI spec 2.3.1.
VARIABLE_ATTRIBUTE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS
0x00000020
Indica los requisitos de autenticación y marca de tiempo que deben cumplirse antes de escribir en esta variable de entorno de firmware. Cuando se establece este atributo, el búfer, representado por pValue, comenzará con una instancia de un descriptor completo (y serializado) EFI_VARIABLE_AUTHENTICATION_2. Para obtener más información, vea UEFI spec 2.3.1.
VARIABLE_ATTRIBUTE_APPEND_WRITE
0x00000040
Anexe una variable de entorno existente con el valor de pValue. Si el firmware no admite la operación, SetFirmwareEnvironmentVariableEx devolverá ERROR_INVALID_FUNCTION.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un valor distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError. Entre los posibles códigos de error se incluyen ERROR_INVALID_FUNCTION.

Comentarios

A partir de Windows 10, versión 1803, las aplicaciones universales de Windows pueden leer y escribir variables de firmware ueFI. Consulta Acceso a variables de firmware ueFI desde una aplicación universal de Windows para obtener más información.

A partir de Windows 10, versión 1803, también se admite la lectura de variables de firmware ueFI desde controladores de User-Mode Driver Framework (UMDF). No se admite la escritura de variables de firmware ueFI desde controladores UMDF.

Para escribir una variable de entorno de firmware, la cuenta de usuario en la que se ejecuta la aplicación debe tener el privilegio SE_SYSTEM_ENVIRONMENT_NAME . Una aplicación universal de Windows debe ejecutarse desde una cuenta de administrador y seguir los requisitos descritos en Acceso a variables de firmware ueFI desde una aplicación universal de Windows.

El método correcto para cambiar los atributos de una variable es eliminar la variable y volver a crearla con atributos diferentes.

El conjunto exacto de variables de entorno de firmware viene determinado por el firmware de arranque. El firmware también especifica la ubicación de estas variables de entorno. Por ejemplo, en un sistema basado 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 usadas, consulte la especificación UEFI. Para obtener más información sobre UEFI y Windows, consulte UEFI y Windows.

Las variables de firmware no se admiten en un sistema basado en BIOS heredado. La función SetFirmwareEnvironmentVariableEx siempre producirá un error en un sistema heredado basado en BIOS, o si Windows se instaló mediante bios heredado en un sistema que admita BIOS heredado y UEFI. Para identificar estas condiciones, llame a la función con un nombre de entorno de firmware ficticio, como una cadena vacía ("") para el parámetro lpName y un GUID ficticio, como "{00000000-0000-0000-0000-000000000000}" para el parámetro lpGuid . En un sistema heredado basado en BIOS o en un sistema que admita BIOS heredado y UEFI donde Windows se instaló mediante bios heredado, se producirá un error en la función ERROR_INVALID_FUNCTION. En un sistema basado en UEFI, la función producirá un error específico del firmware, como ERROR_NOACCESS, para indicar que el espacio de nombres GUID ficticio no existe.

Nota

El encabezado winbase.h define SetFirmwareEnvironmentVariableEx como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado winbase.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

Acceso a variables de firmware ueFI desde una aplicación universal de Windows

GetFirmwareEnvironmentVariableEx

SetFirmwareEnvironmentVariable