INF LogConfig 指令

注意

如果要生成通用或移动驱动程序包,则此指令无效。 请参阅 使用通用 INF 文件

LogConfig 指令引用一个或多个 INF 编写器定义的节,其中每个部分指定硬件资源的逻辑配置 • 中断请求行、内存范围、I/O 端口和 DMA 通道,这些通道可由设备使用。 每个 log-config-section 指定一组可由设备使用的总线相对硬件资源的替代集。

[DDInstall] | 
[DDInstall.LogConfigOverride] 
  
LogConfig=log-config-section[,log-config-section]...

非 PnP 设备的 INF 文件使用此指令创建基本配置。

PnP 设备的 INF 文件仅使用此指令来创建替代配置。

LogConfig 指令引用的每个命名节都采用以下形式:

[log-config-section]
 
ConfigPriority=priority-value[,config-type]
[DMAConfig=[DMAattrs:]DMANum[,DMANum]...]
[IOConfig=io-range[,io-range]...]
[MemConfig=mem-range[,mem-range]...]
[IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...]
[PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]]
[MfCardConfig=ConfigRegBase:ConfigOptions[:IoResourceIndex][(attrs)]...]
...

ConfigPriority=priority-value
指定此逻辑配置的优先级值,如下所示:

期望
软配置,最优化。

NORMAL
软配置,低于 DESIRED 的最佳配置。 这是典型的设置。

如果在 DDInstall 中定义了 log-config-section,则应指定 NORMAL。LogConfigOverride 节,不能指定配置类型值。

理想
软配置,低于 NORMAL 的最佳配置。

HARDRECONFIG
需要进行跳线更改才能重新配置。

HARDWIRED
无法更改。

RESTART
需要重启才能生效。

重新 启动
这与 RESTART 相同。

POWEROFF
要求电源周期生效。

DISABLED
硬件/设备已禁用。

DMAConfig=[DMAattrs:]DMANum[**,**DMANum]...]
如果设备在只有 8 位 DMA 通道的总线上连接,并且设备使用标准系统 DMA,则 DMAattrs 是可选的。 否则,它可以是以下字母之一:

Letter 含义
D 32 位 DMA
W 16 位 DMA
N 8 位 DMA

如果设备使用总线主 DMA,则必须将 M 与下列 (互斥) 字母之一一,以指示所使用的 DMA 通道的类型: ABF。如果未指定 ABF ,则假定使用标准 DMA 通道。

DMANum 将一个或多个相对于总线的 DMA 通道指定为十进制数,每个通道用逗号 (,) 分隔。

IOConfig=io-range[io-range]...
使用以下任一形式为设备指定一个或多个 I/O 端口范围:

start-end[ ([decode-mask][:alias-offset][:attr]) ] (类型 1 I/O 范围)

start
将 I/O 端口范围的起始地址指定为 64 位十六进制地址。

end
指定 I/O 端口范围的结束地址,也称为 64 位十六进制地址。

decode-mask
定义别名类型,可以是以下任一类型:

掩码值 含义 IOR_Alias值
3ff 10 位解码 0x04
fff 12 位解码 0x10
ffff 16 位解码 0x00
0 正解码 0xFF

alias-offset
未使用。

attr
如果给定范围位于系统内存中,则指定字母 M 。 如果省略,则给定范围位于 I/O 端口空间中。

大小@min-max[%align-mask][ ([decode-mask][alias-offset][attr]) ] (类型 2 I/O 范围)

大小
将 I/O 端口范围所需的字节数指定为 32 位十六进制值。

min
将 I/O 端口范围的最小起始地址指定为 64 位十六进制地址。

max
将 I/O 端口范围的可能结束地址指定为 64 位十六进制地址。

align-mask
(可选)指定在按位 AND 操作中使用的 64 位掩码,以在整型 (上对齐 I/O 端口范围的开始,通常为 32 位或 64 位) 地址边界。

decode-mask
定义别名类型,可以是以下任一类型:

掩码值 含义 IOR_Alias值
3ff 10 位解码 0x04
fff 12 位解码 0x10
ffff 16 位解码 0x00
0 正解码 0xFF

alias-offset
未使用。

attr
如果给定范围位于系统内存中,则指定字母 M 。 如果省略,则给定范围位于 I/O 端口空间中。

MemConfig=mem-range[mem-range]...
以下列形式之一为设备指定一个或多个内存范围:

start-end[(attr)] | size@min-max[%align-mask][(attr)]

start
将设备内存范围的起始 (总线相对) 物理地址指定为 64 位十六进制值。

end
指定内存范围的结束物理地址,也称为 64 位十六进制值。

attr
将内存范围的属性指定为以下一个或多个字母:

Letter 含义
R 只读
W 只写
乌尔曼 读取/写入
C 允许组合写入
H 可缓存
F 预提取
D 卡解码寻址为 32 位,而不是 24 位

如果同时指定 R 和 W,或者未指定 RW ,则假定读取/写入。

大小
将内存范围中所需的字节数指定为 32 位十六进制值。

min
将设备内存范围的最低起始地址指定为 64 位十六进制值。

max
将内存范围的最大可能结束地址指定为 64 位十六进制值。

align-mask
(可选)指定在按位 AND 操作中使用的 64 位掩码,以在整型 (上对齐设备内存范围的开始,通常为 64 位) 地址边界。

如果省略对齐掩码,则默认内存对齐方式位于 4K 边界 (FFFFF000) 。

IRQConfig=[IRQattrs:]IRQNum[IRQNum]...
如果设备使用总线相对边缘触发的 IRQ,则省略 IRQattrs。 否则,指定 L 以指示级别触发的 IRQ 和 LS (如果设备可以共享此条目中列出的 IRQ 行)。

IRQNum 指定设备可用作十进制数的一个或多个总线相对 IRQ,每个数字用逗号 (,) 分隔。

PcCardConfig=ConfigIndex[[MemoryCardBase1][MemoryCardBase2]][ (attrs) ]
配置 CardBus 寄存器和/或创建最多两个永久内存窗口,这些窗口映射到设备的属性空间。 驱动程序可以使用内存窗口从 ISR 访问属性空间。 以十六进制格式指定所有数值。

PcCardConfig 条目的元素如下所示:

ConfigIndex
指定 PCMCIA 总线上设备的 8 位 PCMCIA 配置索引。

MemoryCardBase1
(可选)为第一个内存窗口指定 32 位基址。

MemoryCardBase2
(可选)为第二个内存窗口指定 32 位基址。

attrs
(可选)为设备指定一个或多个属性,用空格分隔。 无效的属性说明符使整个 PcCardConfig 条目失效。 如果提供了特定属性的多个说明符,则这些属性将应用于设备的单个 I/O 或内存窗口。 如果仅提供一个说明符,则该属性将应用于所有窗口 (请参阅以下示例) 。

具体而言,如果提供了多个说明符,则从左到右找到的第一个说明符将应用于第一个窗口,下一个说明符应用于第二个窗口。 最多可以由一个 PcCardConfig 条目控制两个 I/O 窗口和两个内存窗口。 如果设备具有两个以上的内存窗口,则必须包含第二个 PcCardConfig 条目。

属性包括:

Attribute 说明
W 16 位 I/O 数据路径。

如果 INF 指定 LogConfig 指令,则默认值为 8 位。 如果未指定 LogConfig 指令,驱动程序将使用 16 位 I/O。
Sn ~IOCS16 源。

如果 n 为 0,则 ~IOCS16 基于数据大小位的值。 如果 n 为 1,则 ~IOCS16 基于来自设备的 ~IOIS16 信号。 默认值为 S1。
Zn I/O 8 位,零等待状态。

如果 n 为 1,则 8 位 I/O 访问将出现零额外的等待状态。 如果 n 为 0,则出现其他等待状态的访问。 此标志对 16 位 I/O 没有意义。 默认值为 Z0。
Xln I/O 等待状态。

如果 n 为 1,则会发生 16 位系统访问,并出现一个额外的等待状态。 默认值为 Xl1。
M 16 位内存数据路径。 默认值为 8 位。
M8 8 位内存数据路径。
XMn 内存等待状态,其中 n 可以是 0、1、2 或 3。

此值确定对内存窗口进行 16 位访问的其他等待状态数。 默认值为 XM3。
A 要映射为属性内存的内存范围。
C 要映射为公共内存 (默认) 的内存范围。

例如, (WB CA M XM1 XI0) 的 attrs 值转换为以下内容:

1st I/O window is 16-bit

2nd I/O window 8-bit

1st memory window is common

2nd memory window is attribute

Memory is 16-bit

One wait state on memory windows

Zero wait states on I/O windows

MfCardConfig=ConfigRegBaseConfigOptions[IoResourceIndex][ (attrs) ]...
指定多功能设备的一个函数的配置集的属性内存位置,如下所示:

ConfigRegBase
为多功能设备的此函数指定配置寄存器的属性偏移量。

ConfigOptions
指定 8 位 PCMCIA 配置选项寄存器。

IoResourceIndex
指定用于编程配置 I/O 基数和限制寄存器的总线驱动程序的 IOConfig 条目的索引。 此索引从零开始,即零指定此 log-config-section 中的初始 IOConfig 条目。

attrs
如果设置为字母 A,则指示 PCMCIA 总线驱动程序在配置和状态寄存器中启用音频启用。

每个 MfCardConfig 条目都提供有关多功能设备的单个函数的信息。 当一组 LogConfig 指令每次引用 INF 的 DDInstall 中的离散 log-config-section时。LogConfigOverride 节,每个 log-config-section 必须有其条目(包括 MfCardConfig 条目)按相同顺序列出。

注解

LogConfig 指令可以在任何制造商、每型号 INF DDInstallINF DDInstall 下指定。LogConfigOverride 节

非 PnP 设备的 INF,它支持多个备用逻辑配置通常定义 DDInstall 节下的一组日志配置节。 每个 log-config-section 指定一组离散的逻辑配置资源。 它还包括一个 ConfigPriority 条目,它根据它对设备和驱动程序性能的影响、初始化轻松等对每个逻辑配置进行排名。

对于 PnP 设备,PnP 管理器为每个 PnP 设备分配一组逻辑硬件资源。 也就是说,PnP 管理器查询系统总线驱动程序,接收其使用的每个设备 I/O 总线配置资源的报告,并分配每个设备集的逻辑硬件资源,以实现所有此类资源的使用的最佳系统范围平衡。

因此,PnP 设备忽略 DDInstall 节下的 LogConfig 指令。 若要替代 PnP 设备的总线报告的资源,请在 DDInstall 下包括 LogConfig 指令。LogConfigOverride 节。 在这种情况下,将使用 log-config-section 中指定的资源,而不是总线报告的资源。

平台扩展可以添加到包含 LogConfig 指令的 DDInstall 节或 DDInstall。LogConfigOverride 节,用于指定特定于平台或特定于 OS 的逻辑配置。 有关详细信息,请参阅 创建 INF 文件

给定的 log-config-section 名称对于 INF 文件必须是唯一的,但它可由同一设备的其他 INF DDInstall 部分中的 LogConfig 指令引用。 每个 INF 编写器创建的节名称必须在 INF 文件中是唯一的,并且必须遵循定义节名称的一般规则。 有关这些规则的详细信息,请参阅 INF 文件的常规语法规则

每个 log-config-section 中只能使用一个 ConfigPriority 条目。 可能有多个其他条目,具体取决于设备的硬件资源要求。

一个或多个 MfCardConfig= 条目只能出现在由 DDInstall 中的 LogConfig 指令引用的 log-config-section中。用于多功能设备的 INF 的 LogConfigOverride 部分。 有关多功能设备的 INF 文件的详细信息,请参阅 支持多功能设备

LogConfig-Referenced节项和值

log-config-section 中,系统安装程序生成二进制逻辑配置记录并将其存储在注册表中。

INF 文件可以包含任意数量的每设备 日志配置节。 但是,每个此类部分必须包含安装一个设备的完整信息。 一般情况下,INF 应按相同顺序指定其每个 log-config-节 中的条目。 INF 应按最适合驱动程序初始化设备的顺序指定每个条目集。

如果给定设备存在多个 log-config-section ,则安装期间仅使用这些 INF 部分之一。 此类 INF 文件部分控制此类节与每个此类 log-config-config-section 中提供的 ConfigPriority 值一起使用。 也就是说,系统安装程序会尝试遵循 INF 文件中的任何配置优先级,但如果找到与已安装的设备发生冲突,系统安装程序可能会选择排名较低的逻辑配置。

在安装期间,选择给定 日志配置节 中每个条目中的一个资源,并将其分配给特定设备。 如果特定设备需要同一类型的多个资源,则必须在其 log-config-节中使用该类型的一组条目。

例如,为了确保特定设备的两个 I/O 端口范围,必须在该设备的 log-config-section 中指定两个 IOConfig= 条目。 另一方面,如果设备不需要 IRQ,则其 INF 可以从 log-config-节中省略 IRQConfig 条目。

示例

此示例显示了 PCMCIA 设备的一些有效的 PcCardConfig 条目。

PcCardConfig=0:E0000:F0000(W)
PcCardConfig=0:E0000(M)
PcCardConfig=0::(W)
PcCardConfig=0(W)

此示例演示 IOConfig 条目中的类型 1 I/O 范围规范。 它指定 I/O 端口区域,大小为 8 字节,可以从 1F8、2F8 或 3F8 开始。

IOConfig=1F8-1FF, 2F8-2FF, 3F8-3FF

相比之下,此示例显示了 IOConfig 条目中的类型 2 I/O 范围规范。 它指定 I/O 端口区域(大小为 8 字节),可以从 300、308、310、318、320 或 328 开始。

IOConfig=8@300-32F%FF8

此示例演示一组四端口设备的 IOConfig 条目,每个条目指定一个 I/O 端口范围,该范围由下一个0x400字节偏移。

IoConfig=0x200-0x21f
IoConfig=0x600-0x61f
IoConfig=0xA00-0xA1f
IoConfig=0xE00-0xE1f

接下来的两个示例显示了典型的 MemConfig 条目。

此示例指定内存区域 32K 字节,可以从 C0000 或 D0000 开始。

MemConfig=C0000-C7FFF, D0000-D7FFF

此示例指定从 64K 边界开始的 32k 字节的内存区域。

MemConfig=8000@C0000-D7FFF%F0000

此示例演示了系统 HDC 类 INF 文件如何为通用 ESDI 硬盘控制器设置多个 日志配置节 ,并使用 DDInstall。特定 IDE 控制器的 LogConfigOverride 节。

[MS_HDC] ; per-manufacturer Models section
%FujitsuIdePccard.DeviceDesc% = 
          atapi_fujitsu_Inst, PCMCIA\FUJITSU-IDE-PC_CARD-DDF2
%*PNP0600.DeviceDesc% = atapi_Inst, *PNP0600 ; generic ESDI HDCs

; ... other manufacturers' Models sections omitted

[atapi_Inst]
CopyFiles = @atapi.sys
LogConfig = esdilc1, esdilc2, esdilc3, esdilc4

; ... [atapi_Inst.Services] + service/EventLog-install omitted here

[esdilc1]
ConfigPriority=HARDWIRED
IOConfig=1f0-1f7(3ff::)
IoConfig=3f6-3f6(3ff::)
IRQConfig=14

[esdilc2]
ConfigPriority=HARDWIRED
IOConfig=170-177(3ff::)
IoConfig=376-376(3ff::)
IRQConfig=15

[esdilc3]
ConfigPriority=HARDWIRED
IOConfig=1e8-1ef(3ff::)
IoConfig=3ee-3ee(3ff::)
IRQConfig=11

[esdilc4]
; ...

[atapi_fujitsu_Inst.LogConfigOverride]
LogConfig = fujitsu.LogConfig0

[fujitsu.LogConfig0]
ConfigPriority=NORMAL
IOConfig=10@100-400%fff0
IRQConfig=14,15,5,7,9,11,12,3
PcCardConfig=1:0:0(W)

有关如何使用 MfCardConfig 条目的一些示例,请参阅 支持具有不完整配置寄存器地址的电脑卡

请参阅

DDInstall

DDInstall。FactDef