Freigeben über


SetFirmwareEnvironmentVariableExA-Funktion (winbase.h)

Legt den Wert der angegebenen Firmwareumgebungsvariablen als Attribute fest, die angeben, wie diese Variable gespeichert und verwaltet wird.

Syntax

BOOL SetFirmwareEnvironmentVariableExA(
  [in] LPCSTR lpName,
  [in] LPCSTR lpGuid,
  [in] PVOID  pValue,
  [in] DWORD  nSize,
  [in] DWORD  dwAttributes
);

Parameter

[in] lpName

Der Name der Firmwareumgebungsvariable. Der Zeiger darf nicht NULL sein.

[in] lpGuid

Die GUID, die den Namespace der Firmwareumgebungsvariablen darstellt. Die GUID muss eine Zeichenfolge im Format "{xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" sein. Wenn das System keine GUID-basierten Namespaces unterstützt, wird dieser Parameter ignoriert. Der Zeiger darf nicht NULL sein.

[in] pValue

Ein Zeiger auf den neuen Wert für die Firmwareumgebungsvariable.

[in] nSize

Die Größe des pValue-Puffers in Bytes. Wenn das VARIABLE_ATTRIBUTE_APPEND_WRITE, VARIABLE_ATTRIBUTE_AUTHENTICATED_WRITE_ACCESS oder VARIABLE_ATTRIBUTE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS Variablenattribut nicht über dwAttributes festgelegt wird, führt das Festlegen dieses Werts auf null zum Löschen dieser Variablen.

[in] dwAttributes

Bitmaske, um UEFI-Variablenattribute festzulegen, die der Variablen zugeordnet sind. Siehe auch UEFI-Spezifikation 2.3.1, Abschnitt 7.2.

Wert Bedeutung
VARIABLE_ATTRIBUTE_NON_VOLATILE
0x00000001
Die Firmwareumgebungsvariable wird im nicht flüchtigen Speicher (z. B. NVRAM) gespeichert.
VARIABLE_ATTRIBUTE_BOOTSERVICE_ACCESS
0x00000002
Auf die Firmwareumgebungsvariable kann während des Startdiensts zugegriffen werden.
VARIABLE_ATTRIBUTE_RUNTIME_ACCESS
0x00000004
Auf die Firmwareumgebungsvariable kann zur Laufzeit zugegriffen werden.
Hinweis Für Variablen mit diesem Attributsatz muss ebenfalls VARIABLE_ATTRIBUTE_BOOTSERVICE_ACCESS festgelegt sein.
 
VARIABLE_ATTRIBUTE_HARDWARE_ERROR_RECORD
0x00000008
Gibt hardwarebezogene Fehler an, die zur Laufzeit aufgetreten sind.
VARIABLE_ATTRIBUTE_AUTHENTICATED_WRITE_ACCESS
0x00000010
Gibt eine Authentifizierungsanforderung an, die erfüllt werden muss, bevor in diese Firmwareumgebungsvariable geschrieben wird. Weitere Informationen finden Sie unter UEFI-Spezifikation 2.3.1.
VARIABLE_ATTRIBUTE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS
0x00000020
Gibt Authentifizierungs- und Zeitstempelanforderungen an, die vor dem Schreiben in diese Firmwareumgebungsvariable erfüllt werden müssen. Wenn dieses Attribut festgelegt ist, beginnt der durch pValue dargestellte Puffer mit einer instance eines vollständigen (und serialisierten) EFI_VARIABLE_AUTHENTICATION_2 Deskriptors. Weitere Informationen finden Sie unter UEFI-Spezifikation 2.3.1.
VARIABLE_ATTRIBUTE_APPEND_WRITE
0x00000040
Fügen Sie eine vorhandene Umgebungsvariable mit dem Wert pValue an. Wenn die Firmware den Vorgang nicht unterstützt, gibt SetFirmwareEnvironmentVariableEx ERROR_INVALID_FUNCTION zurück.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Wert ungleich null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf. Mögliche Fehlercodes sind ERROR_INVALID_FUNCTION.

Hinweise

Ab Windows 10 Version 1803 können universelle Windows-Apps UEFI-Firmwarevariablen lesen und schreiben. Weitere Informationen finden Sie unter Zugreifen auf UEFI-Firmwarevariablen aus einer universellen Windows-App .

Ab Windows 10 Version 1803 wird das Lesen von UEFI-Firmwarevariablen auch von umdf-Treibern (User-Mode Driver Framework) unterstützt. Das Schreiben von UEFI-Firmwarevariablen aus UMDF-Treibern wird nicht unterstützt.

Um eine Firmwareumgebungsvariable zu schreiben, muss das Benutzerkonto, unter dem die App ausgeführt wird, über die Berechtigung SE_SYSTEM_ENVIRONMENT_NAME verfügen. Eine universelle Windows-App muss über ein Administratorkonto ausgeführt werden und die Unter Access UEFI-Firmwarevariablen aus einer universellen Windows-App beschriebenen Anforderungen erfüllen.

Die richtige Methode zum Ändern der Attribute einer Variablen besteht darin, die Variable zu löschen und mit anderen Attributen neu zu erstellen.

Der genaue Satz von Firmwareumgebungsvariablen wird durch die Startfirmware bestimmt. Der Speicherort dieser Umgebungsvariablen wird auch von der Firmware angegeben. Beispielsweise enthält NVRAM auf einem UEFI-basierten System Firmwareumgebungsvariablen, die Systemstarteinstellungen angeben. Informationen zu bestimmten verwendeten Variablen finden Sie in der UEFI-Spezifikation. Weitere Informationen zu UEFI und Windows finden Sie unter UEFI und Windows.

Firmwarevariablen werden auf einem BIOS-basierten Legacysystem nicht unterstützt. Die SetFirmwareEnvironmentVariableEx-Funktion schlägt immer auf einem älteren BIOS-basierten System fehl, oder wenn Windows mithilfe des Legacy-BIOS auf einem System installiert wurde, das sowohl Legacy-BIOS als auch UEFI unterstützt. Um diese Bedingungen zu identifizieren, rufen Sie die Funktion mit einem Dummy-Firmwareumgebungsnamen auf, z. B. einer leeren Zeichenfolge ("") für den parameter lpName und einer Dummy-GUID wie "{00000000-0000-0000-0000-000000000000}" für den lpGuid-Parameter . Auf einem BIOS-älteren System oder auf einem System, das sowohl Legacy-BIOS als auch UEFI unterstützt, auf dem Windows mithilfe des Legacy-BIOS installiert wurde, schlägt die Funktion mit ERROR_INVALID_FUNCTION fehl. Auf einem UEFI-basierten System schlägt die Funktion mit einem firmwarespezifischen Fehler wie ERROR_NOACCESS fehl, um anzugeben, dass der Dummy-GUID-Namespace nicht vorhanden ist.

Hinweis

Der winbase.h-Header definiert SetFirmwareEnvironmentVariableEx als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 8 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile winbase.h (Windows.h einschließen)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Zugreifen auf UEFI-Firmwarevariablen über eine universelle Windows-App

GetFirmwareEnvironmentVariableEx

SetFirmwareEnvironmentVariable