ExGetFirmwareEnvironmentVariable-Funktion (wdm.h)

Die ExGetFirmwareEnvironmentVariable-Routine ruft den Wert der angegebenen Umgebungsvariable der Systemfirmware ab.

Syntax

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

Parameter

[in] VariableName

Ein Zeiger auf eine UNICODE_STRING-Struktur , die den Namen der angegebenen Umgebungsvariablen enthält.

[in] VendorGuid

Ein Zeiger auf eine GUID, die den Anbieter identifiziert, der der angegebenen Umgebungsvariablen zugeordnet ist. Umgebungsvariablen werden basierend auf ihren Anbieter-GUIDs in Namespaces gruppiert. Einige Hardwareplattformen unterstützen möglicherweise keine Anbieter-GUIDs. Auf diesen Plattformen werden alle Variablen in einem gemeinsamen Namespace gruppiert, und der VendorGuid-Parameter wird ignoriert.

[out, optional] Value

Ein Zeiger auf einen vom Aufrufer zugewiesenen Puffer, in den die Routine den Wert der angegebenen Umgebungsvariable schreibt.

[in, out] ValueLength

Ein Zeiger auf eine Position, die die Puffergröße enthält. Beim Eintrag enthält der Speicherort, auf den dieser Parameter verweist, die Größe des vom Aufrufer bereitgestellten Wertpuffers in Bytes. Vor dem Beenden schreibt die Routine die Größe des Variablenwerts in Bytes an diesen Speicherort. Wenn die Routine STATUS_SUCCESS zurückgibt, ist der *ValueLength-Ausgabewert die Anzahl der Bytes von Daten, die in den Wertpuffer geschrieben wurden. Wenn die Routine STATUS_BUFFER_TOO_SMALL zurückgibt, ist *ValueLength die erforderliche Puffergröße.

[out, optional] Attributes

Ein Zeiger auf einen Speicherort, an den die Routine die Attribute der angegebenen Umgebungsvariable schreibt. Dieser Parameter ist optional und kann auf NULL festgelegt werden, wenn der Aufrufer die Attribute nicht benötigt. Weitere Informationen finden Sie in den Hinweisen.

Rückgabewert

ExGetFirmwareEnvironmentVariable gibt bei erfolgreicher Ausführung STATUS_SUCCESS zurück. Mögliche Rückgabewerte sind der folgende Fehler status Codes.

Rückgabecode Beschreibung
STATUS_INSUFFICIENT_RESOURCES Die verfügbaren Systemressourcen reichen nicht aus, um den angeforderten Vorgang abzuschließen.
STATUS_BUFFER_TOO_SMALL Der Wertpuffer ist zu klein.
STATUS_VARIABLE_NOT_FOUND Die angeforderte Variable ist nicht vorhanden.
STATUS_INVALID_PARAMETER Einer der Parameter ist ungültig.
STATUS_NOT_IMPLEMENTED Diese Routine wird auf dieser Plattform nicht unterstützt.
STATUS_UNSUCCESSFUL Die Firmware hat einen nicht erkannten Fehler zurückgegeben.

Hinweise

Umgebungsvariablen der Systemfirmware enthalten Datenwerte, die zwischen der auf der Hardwareplattform implementierten Startfirmwareumgebung und den Betriebssystemladeprogrammen und anderer Software übergeben werden, die in der Firmwareumgebung ausgeführt wird.

Welche Firmwareumgebungsvariablen auf einer Hardwareplattform verfügbar sind, hängt von der Startfirmware ab. Der Speicherort dieser Umgebungsvariablen wird auch von der Firmware angegeben. Auf einer UEFI-basierten Plattform enthält NVRAM beispielsweise Firmwareumgebungsvariablen, die Systemstarteinstellungen angeben. Informationen zu bestimmten verwendeten Variablen finden Sie unter Unified Extensible Firmware Interface Specification (Unified Extensible Firmware Interface Specification) auf der UEFI-Website . Weitere Informationen zu UEFI und Windows finden Sie unter UEFI und Windows.

Firmwareumgebungsvariablen werden auf einer älteren BIOS-basierten Plattform nicht unterstützt. Aufrufe von ExGetFirmwareEnvironmentVariable schlagen auf einer älteren BIOS-basierten Plattform immer fehl. Sie schlagen auch fehl, wenn Windows mit dem Legacy-BIOS auf einer Plattform installiert wurde, die sowohl Legacy-BIOS als auch UEFI unterstützt. Um diese Bedingungen zu identifizieren, verwenden Sie zuerst uuidgen oder ein ähnliches Tool, um eine zufällig eindeutige GUID statisch zu generieren. Rufen Sie dann diese Routine auf, um nach einem bestimmten Variablennamen zu suchen, und geben Sie diese GUID als VendorGuid-Parameter an.

Auf einer Legacy-BIOS-basierten Plattform oder auf einer Plattform, die sowohl Legacy-BIOS als auch UEFI unterstützt, in der Windows jedoch mit dem Legacy-BIOS installiert wurde, schlägt die Funktion mit STATUS_NOT_IMPLEMENTED fehl. Auf einer UEFI-basierten Plattform schlägt die Funktion mit einem firmwarespezifischen Fehler wie STATUS_VARIABLE_NOT_FOUND fehl, um anzugeben, dass der Dummy-GUID-Namespace nicht vorhanden ist.

Wenn der Aufrufer einen Parameter ohne NULL-Attribute angibt, schreibt die Routine die Attribute der angegebenen Umgebungsvariable der Systemfirmware in den Speicherort, auf den von Attributen verwiesen wird. Version 2.3.1 der UEFI-Spezifikation definiert die folgenden Attribute für Firmwareumgebungsvariablen.

Variablenname Wert
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

Diese Attributwerte werden als Flagbits definiert. Der Wert, der in die ULONG-Variable geschrieben wird, auf die von Attributen verwiesen wird, ist entweder null oder der bitweise OR eines oder mehrerer Attribute in der vorherigen Tabelle. Weitere Informationen finden Sie in der UEFI-Spezifikation auf der UEFI-Website .

Wenn Sie einen Sicherungsdatenspeicher erstellen, können Sie diese Funktion verwenden, um alle Starteinstellungen für die Plattform zu speichern, sodass sie wiederhergestellt werden können, indem Sie bei Bedarf die ExSetFirmwareEnvironmentVariable-Routine aufrufen.

ExGetFirmwareEnvironmentVariable ist das Kernelmodusäquivalent der Win32 GetFirmwareEnvironmentVariable-Funktion .

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 8.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Weitere Informationen

ExSetFirmwareEnvironmentVariable

GetFirmwareEnvironmentVariable

UNICODE_STRING