19.6.109. QWordIO(QWord IO 资源描述符宏)
语法 :
QWordIO ( ResourceUsage, IsMinFixed, IsMaxFixed, Decode, ISARanges, AddressGranularity, AddressMinimum, AddressMaximum,
AddressTranslation, RangeLength, ResourceSourceIndex, ResourceSource, DescriptorName, TranslationType, TranslationDensity)
参数
ResourceUsage 指定该 I/O 范围是由此设备消耗(ResourceConsumer)还是传递给子设备(ResourceProducer)。如果未指定,则假定为 ResourceConsumer。
IsMinFixed 指定该 I/O 范围的最小地址是固定的(MinFixed)还是可更改的(MinNotFixed)。如果未指定,则假定为 MinNotFixed。会自动创建 1 位字段 DescriptorName._MIF 以引用资源描述符的这一部分,其中“1”表示 MinFixed,“0”表示 MinNotFixed。
IsMaxFixed 指定该 I/O 范围的最大地址是固定的(MaxFixed)还是可更改的(MaxNotFixed)。如果未指定,则假定为 MaxNotFixed。会自动创建 1 位字段 DescriptorName._MAF 以引用资源描述符的这一部分,其中“1”表示 MaxFixed,“0”表示 MaxNotFixed。
Decode 指定设备是否使用正向(PosDecode)或减法(SubDecode)译码来译码该 I/O 范围。如果未指定,则假定为 PosDecode。会自动创建 1 位字段 DescriptorName._DEC 以引用资源描述符的这一部分,其中“1”表示 SubDecode,“0”表示 PosDecode。
ISARanges 指定所指定的 I/O 范围是仅限于有效的 ISA I/O 范围(ISAOnly)、有效的非 ISA I/O 范围(NonISAOnly),还是不受限制地覆盖整个范围(EntireRange)。会自动创建 2 位字段 DescriptorName._RNG 以引用资源描述符的这一部分,其中“1”表示 NonISAOnly,“2”表示 ISAOnly,“0”表示 EntireRange。
AddressGranularity 求值为一个 64 位整数,用于指定 I/O 范围必须对齐的 2 的幂边界(-1)。会自动创建 64 位字段 DescriptorName._GRA 以引用资源描述符的这一部分。
AddressMinimum 求值为一个 64 位整数,用于指定 I/O 范围可能的最低基地址。在 AddressGranularity 中对应位为“1”的所有位上,该值必须为“0”。对于执行地址转换的桥设备,这是辅助总线上的地址。会自动创建 64 位字段 DescriptorName._MIN 以引用资源描述符的这一部分。
AddressMaximum 求值为一个 64 位整数,用于指定 I/O 范围可能的最高基地址。在 AddressGranularity 中对应位为“1”的所有位上,该值必须为“0”。对于执行地址转换的桥设备,这是辅助总线上的地址。会自动创建 64 位字段 DescriptorName._MAX 以引用资源描述符的这一部分。
AddressTranslation 求值为一个 64 位整数,用于指定应加到辅助总线 I/O 地址上的偏移量,从而得到相应的主总线 I/O 地址。对于所有非桥设备,或不执行转换的桥,此值必须为“0”。会自动创建 64 位字段 DescriptorName._TRA 以引用资源描述符的这一部分。
RangeLength 求值为一个 64 位整数,用于指定在该 I/O 范围内译码的总字节数。会自动创建 64 位字段 DescriptorName._LEN 以引用资源描述符的这一部分。
ResourceSourceIndex 是一个可选参数,它求值为一个 8 位整数,用于指定由 ResourceSource 指定对象内的资源描述符。如果指定了此参数,则也必须指定 ResourceSource 参数。
ResourceSource 是一个可选参数,它求值为一个字符串,包含产生资源池的设备路径,该 I/O 范围从该资源池中分配。如果指定了此参数但未指定 ResourceSourceIndex 参数,则假定其值为零。
DescriptorName 是一个可选参数,用于指定一个整数常量的名称,该常量将在当前作用域中创建,并包含此资源描述符在当前资源模板缓冲区内的偏移量。可将预定义的描述符字段名附加到该名称后,以通过缓冲区字段运算符访问描述符中的各个字段。
TranslationType 是一个可选参数,用于指定总线辅助侧上的资源类型是否与主侧上的资源类型不同(TypeTranslation)或相同(TypeStatic)。如果指定 TypeTranslation,则总线主侧是 Memory。如果指定 TypeStatic,则总线主侧是 I/O。如果未指定,则假定为 TypeStatic。会自动创建 1 位字段 DescriptorName._TTP 以引用资源描述符的这一部分,其中“1”表示 TypeTranslation,“0”表示 TypeStatic。有关更多信息,参见 TTP
TranslationDensity 是一个可选参数,用于指定从主总线到辅助总线的转换是稀疏的(SparseTranslation)还是密集的(DenseTranslation)。仅当 TranslationType 为 TypeTranslation 时才使用它。如果未指定,则假定为 DenseTranslation。会自动创建 1 位字段 DescriptorName._TRS 以引用资源描述符的这一部分,其中“1”表示 SparseTranslation,“0”表示 DenseTranslation。有关更多信息,参见 TRS。
说明
QWordIO 宏求值为一个缓冲区,其中包含一个 64 位 I/O 资源描述符,用于描述一段 I/O 地址范围。64 位 I/O 资源描述符的格式可参见第 6.4.3.5.1 节。此宏设计用于 ResourceTemplate(资源到缓冲区转换宏)内部。