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 valor de enumeração PEP_ACPI_RESOURCE_TYPE 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 bits 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 – Decodificar tipo
|
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 é corrigido.
|
-
3 – Endereço máximo corrigido
|
Quando definido, indica que o endereço máximo é corrigido.
|
-
4 a 7 - reservada
|
Esses bits são reservados e devem ser definidos como zero.
|
TypeSpecificFlags
O valor desse membro depende do valor em 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 – de status de 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 é em cache e dá suporte à combinação de gravação.
3 - A memória é 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 usuária de RAM pelo sistema operacional depois de ler as tabelas ACPI.
3 – NVS de intervalo de endereços: memória NVS 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 – de 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 – Conversã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 - Reservada
|
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. Este sinalizador é para pontes em sistemas com várias pontes. Definir esse bit significa que a janela de memória especificada neste descritor é 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. Este sinalizador é para pontes em sistemas com várias pontes. Definir esse bit significa que a janela de memória especificada neste descritor é 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 abrange todo o intervalo
|
-
2 a 3 - Reservada
|
Esses bits são reservados e devem ser definidos como zero.
|
-
4 – E/S para de tradução de memória
|
0 - Tipo estático: esse recurso é E/S nos lados primário e secundário da ponte.
1 – Conversão de tipo: esse recurso é E/S no lado secundário da ponte e memória no lado primário da ponte.
|
-
5 – conversã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.
endereço = porta + 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.
endereço = (((porta & 0xFFFc) << 10) || (& 0xFFF de porta)) + TranslationAddress
No endereço usado para acessar a porta de E/S, os bits de 2 a 11 devem ser idênticos aos bits 12 a 21, isso fornece quatro bytes de portas de E/S em cada página de 4 KB.
|
-
6 a 7 - Reservada
|
Esses bits são reservados e devem ser definidos como zero.
|
Recurso de Intervalo de Número do Barramento (ResourceFlags = 2)
| Bit(s) |
Significado |
-
0 a 7 – reservada
|
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 traduzem endereços, esse é o espaço de endereço no lado secundário da ponte.
MaximumAddress
O endereço inicial máximo. Para pontes que traduzem endereços, esse é o espaço de endereço no lado secundário da ponte.
TranslationAddress
Para pontes que traduzem 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 para o 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 no de Especificação uefi na seção intitulada GetMemoryMap().
DescriptorName
O nome desse descritor de recurso.
Requisitos
| Requisito |
Valor |
|
de cliente com suporte mínimo |
Com suporte a partir do Windows 10. |
| cabeçalho |
pep_x.h (inclua Pep_x.h) |