INF LogConfig 指示詞
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 通道類型: A、 B 或 F。 如果未指定 A、 B 或 F ,則會假設標準 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 ConfigRegBase:ConfigOptions=[: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 區段,或新增至 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 參考的區段專案和值
從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 專案的某些範例,請參閱 支援具有不完整設定緩存器地址的計算機卡片。