Compartir a través de


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.

Bits Significado
0: marca consumidor/productor
Cuando se establece, esto indica que el dispositivo consume este recurso.
1: de tipo de descodificación
Cuando se establece, indica que este puente descodifica de forma resta la dirección. Esto solo se aplica a 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: reservadas
Estos bits están reservados y deben establecerse en cero.

TypeSpecificFlags

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

Recurso de memoria (ResourceFlags = 0)

Bits Significado
0: de estado de escritura
Cuando se establece, indica que este intervalo de memoria está disponible para leer y escribir. 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 se puede almacenar 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 es utilizable por el sistema operativo.

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 allocatable 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 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 guardar y restaurar en una suspensión de NVS.

5: de 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 memoria en el lado secundario del puente y la E/S en el lado principal del puente.

de 6 a 7: reservados
Estos bits están reservados y deben establecerse en cero.
 

Recurso de E/S (ResourceFlags = 1)

Bits 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 está limitada 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 está limitada 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: reservadas
Estos bits están reservados y deben establecerse en cero.
4: de traducción de E/S a memoria
0- Type-static: este recurso es E/S en los lados primarios y secundarios del puente.

1: traducción de tipos: este recurso se encuentra en la parte secundaria del puente y la memoria en el lado principal del puente.

5: de traducción dispersa
Este bit solo es significativo si se establece el bit 4 (E/S a traducción de 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.

dirección = puerto + 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.

dirección = (((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: reservados
Estos bits están reservados y deben establecerse en cero.
 

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

Bits Significado
de 0 a 7: reservadas
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. Para puentes que traducen direcciones, este es el espacio de direcciones en el lado secundario del puente.

MaximumAddress

Dirección inicial máxima. Para 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 de. Si resourceFlags es cero, este valor es cero; de lo contrario, se puede encontrar el significado del valor en la especificación UEFI en la sección titulada GetMemoryMap().

DescriptorName

Nombre de este descriptor de recursos.

Requisitos

Requisito Valor
cliente mínimo admitido Se admite a partir de Windows 10.
encabezado de pepfx.h (include Pep_x.h)