共用方式為


INF LogConfig 指示詞

警告

從 Windows 11 版本 22H2 開始, 使用此指示詞的驅動程式套件 已不再有資格從 硬體開發人員中心簽章。

通用驅動程式套件Windows 驅動程式 無法使用這個指示詞。

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
指定此邏輯組態的優先順序值,如下所示:

期望
軟體設定,最理想的設定。

正常
軟體設定,比 DESIRED 低。 這是一般設定。

如果log-config-section 是在 DDInstall定義,則應該指定 NORMAL。LogConfigOverride 區段,而且無法指定任何組態類型值。

欠佳
軟式設定,比 NORMAL 還低。

HARDRECONFIG
需要跳線變更才能重新設定。

HARDWIRED
無法變更。

RESTART
需要重新啟動才會生效。

重新啟動
這與 RESTART 相同。

POWEROFF
需要電源週期才會生效。

DISABLED
硬體/裝置已停用。

DMAConfig=[DMAattrs:]DMANum[**,**DMANum]...]
如果裝置連線在只有 8 位 DMA 通道的總線上,且裝置使用標準系統 DMA,DMAattrs 是選擇性的。 否則,它可以是下列其中一個字母:

信函 意義
D 32 位 DMA
W 16 位 DMA
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 連接埠空間中。

size@min-max[%align-mask][[decode-mask][:alias-offset][attr])] (Type 2 I/O range)

size
將 I/O 連接埠範圍所需的位元元數目指定為 32 位十六進位值。

min
將 I/O 連接埠範圍的最低可能起始位址指定為 64 位十六進位位址。

max
將 I/O 連接埠範圍的最高可能結束位址指定為 64 位十六進位位址。

align-mask
選擇性地指定位 AND 作業中使用的 64 位掩碼,以對齊整數 (通常是 32 位或 64 位) 位址界限上的 I/O 連接埠範圍的開頭。

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
將記憶體範圍的屬性指定為下列一或多個字母:

信函 意義
R 唯讀
W 唯寫
烏爾曼 讀取/寫入
C 允許合併寫入
H 可快取
F 預先擷取
D 卡片譯碼尋址是 32 位,而不是 24 位

如果同時指定 R 和 W,或未指定 R 和 W,則會假設為讀取 / 寫入。

size
將記憶體範圍中所需的位元元組數目指定為32位十六進位值。

min
將裝置記憶體範圍的最低可能起始位址指定為64位十六進位值。

max
將記憶體範圍的最高可能結束位址指定為64位十六進位值。

align-mask
選擇性地指定位 AND 作業中使用的 64 位掩碼,以對齊整數 (通常是 64 位) 位址界限上的裝置記憶體範圍的開頭。

如果省略 align-mask,則預設記憶體對齊位於 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 專案。

屬性包括:

屬性 描述
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 要對應為通用記憶體的記憶體範圍(預設值)。

例如,attrs 值 (WB CA M XM1 XI0) 會轉譯為下列內容:

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
指定IOConfig專案的索引,讓總線驅動程式在程式設計組態I/O基底和限制緩存器時使用。 此索引是以零起始,也就是零會指定此log-config-section中的初始 IOConfig 專案。

attrs
如果設定為字母 A,則會指示 PCMCIA 總線驅動程式在設定和狀態快取器中開啟音訊啟用。

每個 MfCardConfig 專案都會提供多功能裝置單一函式的相關信息。 當一組 LogConfig 指示詞每次參考 INF 的 DDInstall 中的離散 log-config-section 時。LogConfigOverride 區段,每個log-config-section 都必須有其專案,包括以相同順序列出的 MfCardConfig 專案。

備註

LogConfig 指示詞可以在任何個別製造商、每個型號的 INF DDInstall 區段 INF DDInstall 下指定。 LogConfigOverride 區段

支持數個替代邏輯組態的非 PnP 裝置 INF 通常會在 DDInstall 區段下定義一組 log-config-sections。 每個 log-config-section 都會指定一組離散的邏輯組態資源。 它也包含 ConfigPriority 專案,其會根據其對裝置和驅動程式效能的影響、輕鬆初始化等等來排名每個邏輯組態。

針對 PnP 裝置,PnP 管理員會將一組邏輯硬體資源指派給每個 PnP 裝置。 也就是說,PnP 管理員會查詢系統總線驅動程式、接收其使用中每個裝置 I/O 總線組態資源的報告,並指派每個裝置的邏輯硬體資源集,以達到所有這些資源使用量的最佳全系統平衡。

因此,PnP 裝置會忽略 DDInstall 區段下的 LogConfig 指示詞。 若要覆寫 PnP 裝置總線所報告的資源,請在 DDInstall 底下包含 LogConfig 指示詞。LogConfigOverride 區段。 在此情況下,會使用log-config-section 中指定的資源,而不是總線所報告的資源。

平臺延伸模組可以新增至包含LogConfig指示詞的 DDInstall 區段,或新增至 DDInstallLogConfigOverride 區段,指定平臺特定或 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 參考的區段專案和值

從log-config-section,系統安裝程式會建置二進位邏輯組態記錄,並將其儲存在登錄中。

INF 檔案可以包含任意數目的個別裝置 log-config-sections。 不過,每個這類區段都必須包含安裝一個裝置的完整資訊。 一般而言,INF 應該以相同順序指定其 每個log-config-sections 中的專案。 INF 應該以最適合驅動程式如何初始化其裝置的順序來指定每組專案。

如果指定裝置有多個 log-config-section 存在,則安裝期間只會使用其中一個 INF 區段。 這類 INF 檔案會部分控制這類區段與每個這類 log-config-config-section 中提供的 ConfigPriority 值搭配使用。 也就是說,系統安裝程式會嘗試接受 INF 檔案中的任何設定優先順序,但如果找到與已安裝裝置衝突,可能會選取排名較低的邏輯組態。

在安裝期間,會選取指定 log-config-section 中每個專案的一個資源,並指派給特定裝置。 如果特定裝置需要相同類型的多個資源,則必須在其log-config-sections 中使用該類型的一組專案。

例如,若要確保特定裝置的兩個 I/O 埠範圍,必須在該裝置的 log-config-區段中指定兩個 IOConfig= 專案。 另一方面,如果裝置不需要 IRQ,其 INF 可以從 log-config-sections 省略 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 硬碟控制器的數 log-config-sections,並使用 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