La structure PEP_ACPI_EXTENDED_ADDRESS est utilisée pour signaler l’utilisation des ressources dans l’espace d’adressage, comme la mémoire et les E/S.
Syntaxe
typedef struct _PEP_ACPI_EXTENDED_ADDRESS {
PEP_ACPI_RESOURCE_TYPE Type;
PEP_ACPI_RESOURCE_FLAGS Flags;
UCHAR ResourceFlags;
UCHAR GeneralFlags;
UCHAR TypeSpecificFlags;
UCHAR RevisionId;
UCHAR Reserved;
ULONGLONG Granularity;
ULONGLONG MinimumAddress;
ULONGLONG MaximumAddress;
ULONGLONG TranslationAddress;
ULONGLONG AddressLength;
ULONGLONG TypeAttribute;
PUNICODE_STRING DescriptorName;
} PEP_ACPI_EXTENDED_ADDRESS, *PPEP_ACPI_EXTENDED_ADDRESS;
Membres
Type
Valeur d’énumération PEP_ACPI_RESOURCE_TYPE décrivant cette ressource.
Flags
Structure PEP_ACPI_RESOURCE_FLAGS décrivant cette ressource.
ResourceFlags
Indique le type de ressource décrit cette structure.
| Valeur |
Signification |
- 0
|
Indique que cette ressource est une plage de mémoire.
|
- 1
|
Indique que cette ressource est une plage d’E/S.
|
- 2
|
Indique que cette ressource est une plage de numéros de bus.
|
- 3-191
|
Ces valeurs sont réservées pour une utilisation ultérieure.
|
- 192-255
|
Ces valeurs sont réservées pour une utilisation par le fournisseur de matériel.
|
GeneralFlags
Valeur contenant les indicateurs de bits communs à tous les types de ressources.
| Bit(s) |
Signification |
-
0 - Indicateur consommateur/producteur
|
Quand elle est définie, cela indique que l’appareil consomme cette ressource.
|
-
1 - Décoder le type
|
Lorsqu’il est défini, indique que ce pont décode de façon soustractive l’adresse. Cela s’applique uniquement aux ponts de niveau supérieur.
Lorsqu’il n’est pas défini, indique que ce pont décode positivement cette adresse.
|
-
2 - Adresse minimale fixe
|
Quand elle est définie, indique que l’adresse minimale est fixe.
|
-
3 - Adresse maximale fixe
|
Quand elle est définie, indique que l’adresse maximale est fixe.
|
-
4 à 7 - réservé
|
Ces bits sont réservés et doivent être définis sur zéro.
|
TypeSpecificFlags
La valeur de ce membre dépend de la valeur dans Membre ResourceFlags. Les indicateurs de chaque type de ressource sont décrits dans les tableaux ci-dessous.
Ressource mémoire (ResourceFlags = 0)
| Bit(s) |
Signification |
-
0 - État d’écriture
|
Quand elle est définie, indique que cette plage de mémoire est disponible pour la lecture et l’écriture. Sinon, cela indique que cette plage de mémoire est en lecture seule.
|
-
1 à 2 - Attributs de mémoire (MEM)
|
0 : indique que la mémoire n’est pas mise en cache.
1 : indique que la mémoire est mise en cache.
2 : indique que la mémoire est mise en cache et prend en charge la combinaison d’écriture.
3 : la mémoire peut être mise en cache et prérécupération.
|
-
3 à 4 - Attributs mémoire (MTP)
|
Ces bits sont définis uniquement si cette ressource de mémoire décrit la RAM système.
0 - Mémoire de plage d’adresses : cette plage est disponible en RAM utilisable par le système d’exploitation.
1 - Plage d’adresses réservée : cette plage d’adresses est utilisée ou réservée par le système et ne doit pas être incluse dans le pool de mémoires allocatable du gestionnaire de mémoire du système d’exploitation.
2 - Plage d’adresses ACPI : ACPI Récupérer la mémoire. Cette plage est disponible en RAM utilisable par le système d’exploitation après avoir lu les tables ACPI.
3 - Plage d’adresses NVS : mémoire NVS ACPI. Cette plage d’adresses est utilisée ou réservée par le système et ne doit pas être utilisée par le système d’exploitation. Cette plage est nécessaire pour être enregistrée et restaurée sur une veille NVS.
|
-
5 - Traduction de mémoire en E/S
|
0 - Type statique : cette ressource est la mémoire sur les côtés principaux et secondaires du pont.
1 - Traduction de type : cette ressource est la mémoire du côté secondaire du pont et des E/S du côté principal du pont.
|
-
6 à 7 - réservé
|
Ces bits sont réservés et doivent être définis sur zéro.
|
Ressource d’E/S (ResourceFlags = 1)
| Bit(s) |
Signification |
-
0 à 1 - Plage
|
0 - Réservé.
1 - Plages non ISA uniquement. Cet indicateur est destiné aux ponts sur les systèmes avec plusieurs ponts. La définition de ce bit signifie que la fenêtre mémoire spécifiée dans ce descripteur est limitée aux adresses D’E/S non ISA qui se trouvent dans la fenêtre spécifiée. Les plages d’E/S non-ISA sont les suivantes : n100-n3FF, n500-n7FF, n900-nBFF, nD00-nFFF. Ce bit ne peut être défini que pour les ponts entièrement configurés via l’espace de noms ACPI.
2 - plages ISA uniquement. Cet indicateur est destiné aux ponts sur les systèmes avec plusieurs ponts. La définition de ce bit signifie que la fenêtre mémoire spécifiée dans ce descripteur est limitée aux adresses d’E/S ISA qui se trouvent dans la fenêtre spécifiée. Les plages d’E/S ISA sont les suivantes : n000-n0FF, n400-n4FF, n800-n8FF, nC00-nCFF. Ce bit ne peut être défini que pour les ponts entièrement configurés via l’espace de noms ACPI.
3 - La fenêtre mémoire couvre toute la plage
|
-
2 à 3 - réservé
|
Ces bits sont réservés et doivent être définis sur zéro.
|
-
4 - E/S en traduction en mémoire
|
0 - Type statique : cette ressource est d’E/S sur les côtés principaux et secondaires du pont.
1 - Traduction de type : cette ressource est io du côté secondaire du pont et de la mémoire sur le côté principal du pont.
|
-
5 - Traduction éparse
|
Ce bit n’est significatif que si le bit 4 (traduction d’E/S en mémoire) est défini.
0 - Traduction dense : l’adresse mémoire principale de n’importe quel port d’E/S spécifique dans la plage secondaire est disponible à l’aide de la fonction suivante.
adresse = port + TranslationAddress
1 - Traduction éparse : l’adresse mémoire principale de n’importe quel port d’E/S spécifique dans la plage secondaire est disponible à l’aide de la fonction suivante.
adresse = (((port & 0xFFFc) << 10) || (port & 0xFFF)) + TranslationAddress
Dans l’adresse utilisée pour accéder au port d’E/S, les bits 2 à 11 doivent être identiques aux bits 12 à 21, ce qui donne quatre octets de ports d’E/S sur chaque page de 4 Ko.
|
-
6 à 7 - réservé
|
Ces bits sont réservés et doivent être définis sur zéro.
|
Ressource de plage de numéros bus (ResourceFlags = 2)
| Bit(s) |
Signification |
-
0 à 7 - réservé
|
Ces bits sont réservés et doivent être définis sur zéro.
|
RevisionId
Indique la révision du descripteur d’espace d’adressage étendu détaillé par cette structure. Pour ACPI 3.0, cette valeur est 1.
Reserved
Granularity
Masque de bits indiquant les bits qui ont été décodés.
MinimumAddress
Adresse de départ minimale. Pour les ponts qui traduisent des adresses, il s’agit de l’espace d’adressage du côté secondaire du pont.
MaximumAddress
Adresse de départ maximale. Pour les ponts qui traduisent des adresses, il s’agit de l’espace d’adressage du côté secondaire du pont.
TranslationAddress
Pour les ponts qui traduisent des adresses sur le pont, il s’agit de l’adresse du côté principal.
AddressLength
Longueur de l’adresse.
TypeAttribute
Indique les attributs spécifiques au type de ressource spécifié dans le membre ResourceFlags. Si ResourceFlags est égal à zéro, cette valeur est égale à zéro, sinon la signification de la valeur se trouve dans la spécification UEFI dans la section intitulée GetMemoryMap().
DescriptorName
Nom de ce descripteur de ressource.
Exigences
| Exigence |
Valeur |
|
client minimum pris en charge |
Prise en charge à partir de Windows 10. |
|
d’en-tête |
pep_x.h (inclure Pep_x.h) |