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) |