19.6.44. ExtendedSpace(扩展地址空间资源描述符宏)
语法 :
ExtendedSpace (ResourceType, ResourceUsage, Decode, IsMinFixed,
IsMaxFixed, TypeSpecificFlags, AddressGranularity, AddressMinimum,
AddressMaximum, AddressTranslation, RangeLength, TypeSpecificAttributes,
DescriptorName)
参数
ResourceType 求值为一个 8 位整数,用于指定该资源的类型。可接受的值为 0xC0 到 0xFF。
ResourceUsage 指定此内存范围是由该设备消耗(ResourceConsumer)还是传递给子设备(ResourceProducer)。如果未指定任何内容,则假定为 ResourceConsumer。
Decode 指定设备是否使用正向解码(PosDecode)或减法解码(SubDecode)对该内存范围进行解码。如果未指定任何内容,则假定为 PosDecode。会自动创建 1 位字段 DescriptorName._DEC 来引用资源描述符的这一部分,其中“1”表示 SubDecode,“0”表示 PosDecode。
IsMinFixed 指定该内存范围的最小地址是固定的(MinFixed)还是可以更改的(MinNotFixed)。如果未指定任何内容,则假定为 MinNotFixed。会自动创建 1 位字段 DescriptorName._MIF 来引用资源描述符的这一部分,其中“1”表示 MinFixed,“0”表示 MinNotFixed。
IsMaxFixed 指定该内存范围的最大地址是固定的(MaxFixed)还是可以更改的(MaxNotFixed)。如果未指定任何内容,则假定为 MaxNotFixed。会自动创建 1 位字段 DescriptorName._MAF 来引用资源描述符的这一部分,其中“1”表示 MaxFixed,“0”表示 MaxNotFixed。
TypeSpecificFlags 求值为一个 8 位整数。这些标志特定于 ResourceType。
AddressGranularity 求值为一个 64 位整数,用于指定该内存范围必须对齐到的 2 的幂边界(- 1)。会自动创建 64 位字段 DescriptorName._GRA 来引用资源描述符的这一部分。
AddressMinimum 求值为一个 64 位整数,用于指定该内存范围可能的最低基地址。对于 AddressGranularity 中对应位为“1”的所有位,该值在这些位上必须为“0”。对于执行地址转换的桥设备,这是次级总线上的地址。会自动创建 64 位字段 DescriptorName._MIN 来引用资源描述符的这一部分。
AddressMaximum 求值为一个 64 位整数,用于指定该内存范围可能的最高基地址。对于 AddressGranularity 中对应位为“1”的所有位,该值在这些位上必须为“0”。对于执行地址转换的桥设备,这是次级总线上的地址。会自动创建 64 位字段 DescriptorName._MAX 来引用资源描述符的这一部分。
AddressTranslation 求值为一个 64 位整数,用于指定要加到次级总线 I/O 地址上的偏移量,从而得到对应的主总线 I/O 地址。对于所有非桥设备,或不执行转换的桥,此值必须为“0”。会自动创建 64 位字段 DescriptorName._TRA 来引用资源描述符的这一部分。
RangeLength 求值为一个 64 位整数,用于指定在该内存范围内被解码的总字节数。会自动创建 64 位字段 DescriptorName._LEN 来引用资源描述符的这一部分。
类型特定属性 是一个可选参数,用于指定特定于此资源类型的属性。
DescriptorName 是一个可选参数,用于指定一个整数常量的名称,该常量将在当前作用域中创建,并包含该资源描述符在当前资源模板缓冲区内的偏移量。可将预定义的描述符字段名附加到该名称后,以通过 Buffer Field 运算符访问描述符中的各个字段。
说明
ExtendedSpace 宏求值为一个缓冲区,其中包含一个 64 位地址空间资源描述符,用于描述一段地址范围。64 位 AddressSpace 描述符的格式可参见第 6.4.3.5.4 节。此宏设计为在 ResourceTemplate(资源到缓冲区转换宏)内部使用。