estrutura PEP_ACPI_EXTENDED_ADDRESS (pepfx.h)

A estrutura PEP_ACPI_EXTENDED_ADDRESS é usada para relatar o uso de recursos no espaço de endereço, como memória e E/S.

Sintaxe

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;

Membros

Type

Um PEP_ACPI_RESOURCE_TYPE valor de enumeração que descreve esse recurso.

Flags

Uma estrutura PEP_ACPI_RESOURCE_FLAGS que descreve esse recurso.

ResourceFlags

Indica o tipo de recurso que essa estrutura descreve.

Valor Significado
0
Indica que esse recurso é um intervalo de memória.
1
Indica que esse recurso é um intervalo de E/S.
2
Indica que esse recurso é um intervalo de números de barramento.
3-191
Esses valores são reservados para uso futuro.
192-255
Esses valores são reservados para uso pelo fornecedor de hardware.

GeneralFlags

Um valor que contém os sinalizadores de bit que são comuns a todos os tipos de recursos.

Bit(s) Significado
0 – Sinalizador consumidor/produtor
Quando definido, isso indica que o dispositivo consome esse recurso.
1 – Tipo de decodificação
Quando definido, indica que essa ponte decodifica subtrativamente o endereço. Isso se aplica somente a pontes de nível superior.

Quando não definido, indica que essa ponte decodifica positivamente esse endereço.

2 – Endereço mínimo corrigido
Quando definido, indica que o endereço mínimo é fixo.
3 – Endereço máximo corrigido
Quando definido, indica que o endereço máximo é corrigido.
4 a 7 - Reservado
Esses bits são reservados e devem ser definidos como zero.

TypeSpecificFlags

O valor desse membro depende do valor no membro ResourceFlags . Os sinalizadores para cada tipo de recurso são descritos nas tabelas abaixo.

Recurso de Memória (ResourceFlags = 0)

Bit(s) Significado
0 – Status da gravação
Quando definido, indica que esse intervalo de memória está disponível para leitura e gravação. Caso contrário, isso indica que esse intervalo de memória é somente leitura.
1 a 2 – Atributos de memória (MEM)
0 – Indica que a memória não pode ser armazenada em cache.

1 – Indica que a memória pode ser armazenada em cache.

2 – Indica que a memória pode ser armazenada em cache e dá suporte à combinação de gravação.

3 – A memória pode ser armazenada em cache e pré-executável.

3 a 4 – Atributos de memória (MTP)
Esses bits só serão definidos se esse recurso de memória descrever a RAM do sistema.

0 – Memória do intervalo de endereços: esse intervalo está disponível para uso de RAM pelo sistema operacional.

1 – Intervalo de endereços reservado: esse intervalo de endereços está em uso ou reservado pelo sistema e não deve ser incluído no pool de memória alocável do gerenciador de memória do sistema operacional.

2 – ACPI do intervalo de endereços: ACPI Recuperar Memória. Esse intervalo está disponível para a RAM utilizável pelo sistema operacional depois de ler as tabelas de ACPI.

3 – NVS do intervalo de endereços: memória NVS da ACPI. Esse intervalo de endereços está em uso ou reservado pelo sistema e não deve ser usado pelo sistema operacional. Esse intervalo é necessário para ser salvo e restaurado em uma suspensão NVS.

5 – Tradução de memória para E/S
0 – Tipo estático: esse recurso é memória nos lados primário e secundário da ponte.

1 – Tradução de tipo: esse recurso é memória no lado secundário da ponte e E/S no lado primário da ponte.

6 a 7 - Reservado
Esses bits são reservados e devem ser definidos como zero.
 

Recurso de E/S (ResourceFlags = 1)

Bit(s) Significado
0 a 1 – Intervalo
0 - Reservado.

1 – somente intervalos não ISA. Esse sinalizador destina-se a pontes em sistemas com várias pontes. Definir esse bit significa que a janela de memória especificada neste descritor está limitada aos endereços de E/S não ISA que se enquadram na janela especificada. Os intervalos de E/S não ISA são: n100-n3FF, n500-n7FF, n900-nBFF, nD00-nFFF. Esse bit só pode ser definido para pontes totalmente configuradas por meio do namespace ACPI.

2 – somente intervalos ISA. Esse sinalizador destina-se a pontes em sistemas com várias pontes. Definir esse bit significa que a janela de memória especificada neste descritor está limitada aos endereços de E/S ISA que se enquadram na janela especificada. Os intervalos de E/S ISA são: n000-n0FF, n400-n4FF, n800-n8FF, nC00-nCFF. Esse bit só pode ser definido para pontes totalmente configuradas por meio do namespace ACPI.

3 – A janela de memória cobre todo o intervalo

2 a 3 - Reservado
Esses bits são reservados e devem ser definidos como zero.
4 – Tradução de E/S para memória
0 – Tipo estático: esse recurso é E/S nos lados primário e secundário da ponte.

1 – Tradução de tipo: esse recurso é E/S no lado secundário da ponte e memória no lado primário da ponte.

5 – Tradução esparsa
Esse bit só será significativo se o bit 4 (conversão de E/S para memória) estiver definido.

0 – Tradução densa: o endereço de memória do lado primário de qualquer porta de E/S específica dentro do intervalo secundário pode ser encontrado usando a função a seguir.

address = port + TranslationAddress

1 – Tradução esparsa: o endereço de memória do lado primário de qualquer porta de E/S específica dentro do intervalo secundário pode ser encontrado usando a função a seguir.

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

No endereço usado para acessar a porta de E/S, os bits 2 a 11 devem ser idênticos aos bits de 12 a 21, isso fornece quatro bytes de portas de E/S em cada página de 4 KB.

6 a 7 - Reservado
Esses bits são reservados e devem ser definidos como zero.
 

Recurso intervalo de número do barramento (ResourceFlags = 2)

Bit(s) Significado
0 a 7 - Reservado
Esses bits são reservados e devem ser definidos como zero.

RevisionId

Indica a revisão do descritor de espaço de endereço estendido detalhado por essa estrutura. Para ACPI 3.0, esse valor é 1.

Reserved

Granularity

Uma máscara de bits que indica quais bits foram decodificados.

MinimumAddress

O endereço inicial mínimo. Para pontes que convertem endereços, este é o espaço de endereço no lado secundário da ponte.

MaximumAddress

O endereço inicial máximo. Para pontes que convertem endereços, este é o espaço de endereço no lado secundário da ponte.

TranslationAddress

Para pontes que convertem endereços através da ponte, este é o endereço no lado primário.

AddressLength

O comprimento do endereço.

TypeAttribute

Indica atributos específicos ao tipo de recurso especificado no membro ResourceFlags . Se ResourceFlags for zero, esse valor será zero, caso contrário, o significado do valor poderá ser encontrado na Especificação UEFI na seção intitulada GetMemoryMap().

DescriptorName

O nome desse descritor de recurso.

Requisitos

   
Cliente mínimo com suporte Suporte para começar com Windows 10.
Cabeçalho pepfx.h (inclua Pep_x.h)