estructura PEP_ACPI_EXTENDED_ADDRESS (pepfx.h)

La estructura PEP_ACPI_EXTENDED_ADDRESS se usa para notificar el uso de recursos en el espacio de direcciones, como la memoria y la E/S.

Sintaxis

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;

Miembros

Type

Valor de enumeración PEP_ACPI_RESOURCE_TYPE que describe este recurso.

Flags

Estructura PEP_ACPI_RESOURCE_FLAGS que describe este recurso.

ResourceFlags

Indica el tipo de recurso que describe esta estructura.

Valor Significado
0
Indica que este recurso es un intervalo de memoria.
1
Indica que este recurso es un intervalo de E/S.
2
Indica que este recurso es un intervalo de números de bus.
3-191
Estos valores están reservados para uso futuro.
192-255
Estos valores están reservados para su uso por parte del proveedor de hardware.

GeneralFlags

Valor que contiene las marcas de bits que son comunes a todos los tipos de recursos.

Bit(s) Significado
0 - Marca consumidor/productor
Cuando se establece, esto indica que el dispositivo consume este recurso.
1 - Tipo de descodificación
Cuando se establece, indica que este puente descodifica de forma resta la dirección. Esto solo se aplica a los puentes de nivel superior.

Cuando no se establece, indica que este puente descodifica positivamente esta dirección.

2 - Dirección mínima fija
Cuando se establece, indica que la dirección mínima es fija.
3 - Número máximo de direcciones fijas
Cuando se establece, indica que la dirección máxima es fija.
De 4 a 7 - Reservado
Estos bits están reservados y deben establecerse en cero.

TypeSpecificFlags

El valor de este miembro depende del valor del miembro ResourceFlags . Las marcas de cada tipo de recurso se describen en las tablas siguientes.

Recurso de memoria (ResourceFlags = 0)

Bit(s) Significado
0 - Estado de escritura
Cuando se establece, indica que este intervalo de memoria está disponible para lectura y escritura. De lo contrario, esto indica que este intervalo de memoria es de solo lectura.
De 1 a 2: atributos de memoria (MEM)
0 : indica que la memoria no se puede almacenar en caché.

1 : indica que la memoria se puede almacenar en caché.

2 : indica que la memoria es almacenable en caché y admite la combinación de escritura.

3 - La memoria es almacenable en caché y captura previa.

De 3 a 4: atributos de memoria (MTP)
Estos bits solo se definen si este recurso de memoria describe la RAM del sistema.

0 - Memoria de intervalo de direcciones: este intervalo está disponible para que el sistema operativo pueda usar la RAM.

1 - Intervalo de direcciones reservado: este intervalo de direcciones está en uso o reservado por el sistema y no se debe incluir en el grupo de memoria asignable del administrador de memoria del sistema operativo.

2 - Intervalo de direcciones ACPI: ACPI Reclamar memoria. El sistema operativo puede usar este intervalo después de leer las tablas ACPI.

3 - Intervalo de direcciones NVS: MEMORIA DE NVS ACPI. Este intervalo de direcciones está en uso o reservado por el sistema y no debe ser utilizado por el sistema operativo. Este intervalo es necesario para guardarlo y restaurarse a través de una suspensión nvS.

5- Traducción de memoria a E/S
0 - Type-static: este recurso es memoria en los lados principal y secundario del puente.

1 - Traducción de tipos: este recurso es la memoria en el lado secundario del puente y la E/S en el lado principal del puente.

De 6 a 7 - Reservado
Estos bits están reservados y deben establecerse en cero.
 

Recurso de E/S (ResourceFlags = 1)

Bit(s) Significado
De 0 a 1 : intervalo
0 - Reservado.

1 - Solo intervalos que no son ISA. Esta marca es para puentes en sistemas con varios puentes. Establecer este bit significa que la ventana de memoria especificada en este descriptor se limita a las direcciones de E/S que no son ISA que se encuentran dentro de la ventana especificada. Los intervalos de E/S que no son ISA son: n100-n3FF, n500-n7FF, n900-nBFF, nD00-nFFF. Este bit solo se puede establecer para puentes completamente configurados a través del espacio de nombres ACPI.

2 - Solo intervalos ISA. Esta marca es para puentes en sistemas con varios puentes. Establecer este bit significa que la ventana de memoria especificada en este descriptor se limita a las direcciones de E/S de ISA que se encuentran dentro de la ventana especificada. Los intervalos de E/S de ISA son: n000-n0FF, n400-n4FF, n800-n8FF, nC00-nCFF. Este bit solo se puede establecer para puentes completamente configurados a través del espacio de nombres ACPI.

3 - La ventana de memoria cubre todo el intervalo

De 2 a 3 - Reservado
Estos bits están reservados y deben establecerse en cero.
4- Traducción de E/S a memoria
0 - Type-static: este recurso es E/S en los lados principal y secundario del puente.

1 - Traducción de tipos: este recurso es E/S en el lado secundario del puente y la memoria en el lado principal del puente.

5 - Traducción dispersa
Este bit solo es significativo si se establece el bit 4 (traducción de E/S a memoria).

0 - Traducción densa: la dirección de memoria del lado principal de cualquier puerto de E/S específico dentro del intervalo secundario se puede encontrar mediante la siguiente función.

address = port + TranslationAddress

1 - Traducción dispersa: la dirección de memoria del lado principal de cualquier puerto de E/S específico dentro del intervalo secundario se puede encontrar mediante la siguiente función.

address = ((port & 0xFFFc) 10) << || (puerto & 0xFFF)) + TranslationAddress

En la dirección usada para acceder al puerto de E/S, los bits de 2 a 11 deben ser idénticos a los bits de 12 a 21, lo que proporciona cuatro bytes de puertos de E/S en cada página de 4 KB.

De 6 a 7 - Reservado
Estos bits están reservados y deben establecerse en cero.
 

Recurso de intervalo de números de bus (ResourceFlags = 2)

Bit(s) Significado
De 0 a 7 - Reservado
Estos bits están reservados y deben establecerse en cero.

RevisionId

Indica la revisión del descriptor de espacio de direcciones extendido detallado por esta estructura. Para ACPI 3.0, este valor es 1.

Reserved

Granularity

Máscara de bits que indica qué bits se han descodificado.

MinimumAddress

Dirección inicial mínima. En el caso de los puentes que traducen direcciones, este es el espacio de direcciones en el lado secundario del puente.

MaximumAddress

Dirección inicial máxima. En el caso de los puentes que traducen direcciones, este es el espacio de direcciones en el lado secundario del puente.

TranslationAddress

En el caso de los puentes que traducen direcciones a través del puente, esta es la dirección del lado principal.

AddressLength

Longitud de la dirección.

TypeAttribute

Indica los atributos específicos del tipo de recurso especificado en el miembro ResourceFlags . Si ResourceFlags es cero, este valor es cero; de lo contrario, el significado del valor se puede encontrar en la especificación UEFI de la sección titulada GetMemoryMap().

DescriptorName

Nombre de este descriptor de recursos.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite a partir de Windows 10.
Encabezado pepfx.h (include Pep_x.h)