ExGetFirmwareEnvironmentVariable, fonction (wdm.h)
La routine ExGetFirmwareEnvironmentVariable obtient la valeur de la variable d’environnement du microprogramme système spécifiée.
Syntaxe
NTSTATUS ExGetFirmwareEnvironmentVariable(
[in] PUNICODE_STRING VariableName,
[in] LPGUID VendorGuid,
[out, optional] PVOID Value,
[in, out] PULONG ValueLength,
[out, optional] PULONG Attributes
);
Paramètres
[in] VariableName
Pointeur vers une structure UNICODE_STRING qui contient le nom de la variable d’environnement spécifiée.
[in] VendorGuid
Pointeur vers un GUID qui identifie le fournisseur associé à la variable d’environnement spécifiée. Les variables d’environnement sont regroupées dans des espaces de noms en fonction des GUID de leur fournisseur. Certaines plateformes matérielles peuvent ne pas prendre en charge les GUID du fournisseur. Sur ces plateformes, toutes les variables sont regroupées dans un espace de noms commun et le paramètre VendorGuid est ignoré.
[out, optional] Value
Pointeur vers une mémoire tampon allouée à l’appelant dans laquelle la routine écrit la valeur de la variable d’environnement spécifiée.
[in, out] ValueLength
Pointeur vers un emplacement qui contient la taille de la mémoire tampon. Lors de l’entrée, l’emplacement pointé par ce paramètre contient la taille, en octets, de la mémoire tampon value fournie par l’appelant. Avant de quitter, la routine écrit à cet emplacement la taille, en octets, de la valeur de la variable. Si la routine retourne STATUS_SUCCESS, la valeur de sortie *ValueLength est le nombre d’octets de données écrites dans la mémoire tampon Value . Si la routine retourne STATUS_BUFFER_TOO_SMALL, *ValueLength est la taille de mémoire tampon requise.
[out, optional] Attributes
Pointeur vers un emplacement dans lequel la routine écrit les attributs de la variable d’environnement spécifiée. Ce paramètre est facultatif et peut être défini sur NULL si l’appelant n’a pas besoin des attributs. Pour plus d'informations, consultez la section Notes.
Valeur retournée
ExGetFirmwareEnvironmentVariable retourne STATUS_SUCCESS si elle réussit. Les valeurs de retour possibles incluent les codes d’erreur status suivants.
Code de retour | Description |
---|---|
STATUS_INSUFFICIENT_RESOURCES | Les ressources système disponibles sont insuffisantes pour terminer l’opération demandée. |
STATUS_BUFFER_TOO_SMALL | La mémoire tampon Value est trop petite. |
STATUS_VARIABLE_NOT_FOUND | La variable demandée n’existe pas. |
STATUS_INVALID_PARAMETER | L’un des paramètres n’est pas valide. |
STATUS_NOT_IMPLEMENTED | Cette routine n’est pas prise en charge sur cette plateforme. |
STATUS_UNSUCCESSFUL | Le microprogramme a retourné une erreur non reconnue. |
Remarques
Les variables d’environnement du microprogramme système contiennent des valeurs de données qui sont passées entre l’environnement de microprogramme de démarrage implémenté dans la plateforme matérielle et les chargeurs de système d’exploitation et autres logiciels qui s’exécutent dans l’environnement de microprogramme.
L’ensemble des variables d’environnement de microprogramme disponibles dans une plateforme matérielle dépend du microprogramme de démarrage. L’emplacement de ces variables d’environnement est également spécifié par le microprogramme. Par exemple, sur une plateforme UEFI, NVRAM contient des variables d’environnement de microprogramme qui spécifient les paramètres de démarrage du système. Pour plus d’informations sur les variables spécifiques utilisées, consultez la spécification de l’interface de microprogramme extensible unifiée sur le site web UEFI . Pour plus d’informations sur UEFI et Windows, consultez UEFI et Windows.
Les variables d’environnement de microprogramme ne sont pas prises en charge sur une plateforme bios héritée. Les appels à ExGetFirmwareEnvironmentVariable échouent toujours sur une plateforme bios héritée ; Ils échouent également si Windows a été installé à l’aide du BIOS hérité sur une plateforme qui prend en charge à la fois le BIOS hérité et UEFI. Pour identifier ces conditions, utilisez d’abord uuidgen ou un outil similaire pour générer statiquement un GUID unique aléatoire. Appelez ensuite cette routine pour rechercher un nom de variable spécifique, en fournissant ce GUID comme paramètre VendorGuid .
Sur une plateforme bios héritée, ou sur une plateforme qui prend en charge à la fois le BIOS hérité et l’UEFI, mais dans laquelle Windows a été installé à l’aide du BIOS hérité, la fonction échoue avec STATUS_NOT_IMPLEMENTED. Sur une plateforme UEFI, la fonction échoue avec une erreur spécifique au microprogramme, telle que STATUS_VARIABLE_NOT_FOUND, pour indiquer que l’espace de noms GUID factice n’existe pas.
Si l’appelant spécifie un paramètre Attributs non NULL, la routine écrit les attributs de la variable d’environnement du microprogramme système spécifiée dans l’emplacement désigné par Attributes. La version 2.3.1 de la spécification UEFI définit les attributs suivants pour les variables d’environnement du microprogramme.
Nom de la variable | Valeur |
---|---|
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 |
Ces valeurs d’attribut sont définies en tant que bits d’indicateur. La valeur écrite dans la variable ULONG pointée par Attributes est égale à zéro ou au niveau du bit OR d’un ou de plusieurs attributs dans le tableau précédent. Pour plus d’informations, consultez la spécification UEFI sur le site web UEFI .
Si vous créez un magasin de données de sauvegarde, vous pouvez utiliser cette fonction pour enregistrer tous les paramètres de démarrage de la plateforme afin qu’ils puissent être restaurés en appelant la routine ExSetFirmwareEnvironmentVariable si nécessaire.
ExGetFirmwareEnvironmentVariable est l’équivalent en mode noyau de la fonction Win32 GetFirmwareEnvironmentVariable .
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 8. |
Plateforme cible | Universal |
En-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Voir aussi
ExSetFirmwareEnvironmentVariable