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
指定此邏輯組態的優先順序值,如下所示:
期望
已設定最理想的軟體。
NORMAL
軟體設定,比 DESIRED 還低。 這是典型的設定。
如果 log-config-section 是在 DDInstall 中定義,則應該指定 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 通道類型: A、 B 或 F。如果未指定 A、 B 或 F ,則會假設標準 DMA 通道。
DMANum 會將一或多個總線相對 DMA 通道指定為十進位數,每個通道會以逗號分隔 (,) 。
IOConfig=io-range[,io-range]...
以下列任一形式指定裝置的一或多個 I/O 連接埠範圍:
start-end[ ([decode-mask][:alias-offset][:attr]) ] (Type 1 I/O range)
開始
將 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]) ] (Type 2 I/O range)
size
將 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)]
開始
將裝置記憶體範圍的起始 (總線相對) 實體位址指定為64位十六進位值。
end
指定記憶體範圍的結束實體位址,也可以指定為64位十六進位值。
attr
將記憶體範圍的屬性指定為下列一或多個字母:
Letter | 意義 |
---|---|
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 專案。
屬性包括:
屬性 | Description |
---|---|
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=ConfigRegBase:ConfigOptions[: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 DDInstall 區段或 INF 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-sections 中的專案。 INF 應該依照最適合驅動程式初始化其裝置的順序指定每個專案集。
如果指定裝置存在一個以上的 log-config-section ,則安裝期間只會使用其中一個INF區段。 這類 INF 檔案會部分控制這類區段會與它在每個這類 log-config-config-section 中提供的 ConfigPriority 值搭配使用。 也就是說,系統安裝程式會嘗試接受 INF 檔案中的任何設定優先順序,但如果找到與已安裝的裝置發生衝突,可能會選取較低排名的邏輯組態。
在安裝期間,會選取指定 之log-config-section 中每個專案的一個和唯一資源,並指派給特定裝置。 如果特定裝置需要相同類型的多個資源,則必須在其 log-config-sections 中使用該類型的一組專案。
例如,為了確保特定裝置的兩個 I/O 埠範圍,必須在該裝置的log-config-section 中指定兩個 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 專案中的Type 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 硬碟控制器的數個 記錄-config-區段 ,並使用 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 專案的一些範例,請參閱 支援未完成設定緩存器地址的計算機卡。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應