19.6.34. DWordIO(DWord I/O 资源描述符宏)
语法 :
DWordIO ( 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 求值为一个 32 位整数,用于指定该 I/O 范围必须对齐到的 2 的幂边界(- 1)。系统会自动创建 32 位字段 DescriptorName._GRA 来引用资源描述符的这一部分。
AddressMinimum 求值为一个 32 位整数,用于指定该 I/O 范围可能的最低基址。在 AddressGranularity 中对应位为 ‘1’ 的所有位上,该值必须为 ‘0’。对于进行地址转换的桥设备,这是辅助总线上的地址。系统会自动创建 32 位字段 DescriptorName._MIN 来引用资源描述符的这一部分。
AddressMaximum 求值为一个 32 位整数,用于指定该 I/O 范围可能的最高基址。在 AddressGranularity 中对应位为 ‘1’ 的所有位上,该值必须为 ‘0’。对于进行地址转换的桥设备,这是辅助总线上的地址。系统会自动创建 32 位字段 DescriptorName._MAX 来引用资源描述符的这一部分。
AddressTranslation 求值为一个 32 位整数,用于指定要加到辅助总线 I/O 地址上的偏移量,从而得到对应的主总线 I/O 地址。对于所有非桥设备或不执行转换的桥,该值必须为 ‘0’。系统会自动创建 32 位字段 DescriptorName._TRA 来引用资源描述符的这一部分。
RangeLength 求值为一个 32 位整数,用于指定该 I/O 范围中被解码的总字节数。系统会自动创建 32 位字段 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。更多信息请参见 表 6.49。
TranslationDensity 是一个可选参数,用于指定从主总线到辅助总线的转换是否为稀疏(SparseTranslation)或稠密(DenseTranslation)。它仅在 TranslationType 为 TypeTranslation 时使用。如果未指定任何内容,则假定为 DenseTranslation。系统会自动创建 1 位字段 DescriptorName._TRS 来引用资源描述符的这一部分,其中 ‘1’ 表示 SparseTranslation,‘0’ 表示 DenseTranslation。更多信息请参见 表 6.50。
说明
DWordIO 宏求值为一个包含 32 位 I/O 范围资源描述符的缓冲区。32 位 I/O 范围资源描述符的格式可参见 表 6.46。此宏设计用于 ResourceTemplate(资源到缓冲区转换宏)内部。