Partager via


structure PEP_ACPI_EXTENDED_ADDRESS (pepfx.h)

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 par 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 à l’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
Lorsqu’il est défini, cela indique que l’appareil consomme cette ressource.
1 - Type de décodage
Lorsqu’il est défini, indique que ce pont décode l’adresse de manière soustractive. 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
Lorsque la valeur est définie, indique que l’adresse minimale est fixe.
3 - Adresse maximale corrigée
Lorsqu’il est défini, indique que l’adresse maximale est corrigée.
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 le 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 - Status d’écriture
Lorsqu’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 mis en cache.

1 - Indique que la mémoire peut être mise en cache.

2 - Indique que la mémoire peut être mise en cache et prend en charge la combinaison d’écritures.

3 - La mémoire est mise en cache et préréchable.

3 à 4 - Attributs de 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émoire 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 une fois qu’il a 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 doit être enregistrée et restaurée dans une veille NVS.

5 - Traduction de la mémoire vers les E/S
0 - Type-static : cette ressource est de la mémoire sur les côtés principal et secondaire du pont.

1 - Traduction de type : cette ressource est la mémoire du côté secondaire du pont et les 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 concerne les 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 concerne les 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 - Traduction des E/S vers la mémoire
0 - Type-static : cette ressource est une E/S sur les côtés principal et secondaire du pont.

1 - Traduction de type : cette ressource correspond aux E/S du côté secondaire du pont et à la mémoire du côté principal du pont.

5 - Traduction éparse
Ce bit n’est significatif que si le bit 4 (traduction d’E/S vers la mémoire) est défini.

0 - Traduction dense : l’adresse mémoire côté principal de n’importe quel port d’E/S spécifique dans la plage côté secondaire est disponible à l’aide de la fonction suivante.

address = port + TranslationAddress

1 - Traduction éparse : l’adresse mémoire côté principal de n’importe quel port d’E/S spécifique dans la plage côté secondaire est disponible à l’aide de la fonction suivante.

address = (((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 de 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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge à partir de Windows 10.
En-tête pepfx.h (include Pep_x.h)