INF LogConfig ディレクティブ
注意事項
Windows 11 バージョン 22H2 以降では、このディレクティブを使用する ドライバー パッケージ は、 ハードウェア デベロッパー センターからの署名の対象ではなくなりました。
ユニバーサル ドライバー パッケージ と Windows ドライバー では、このディレクティブを使用できません。
LogConfig ディレクティブは、1 つ以上の 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)]...]
...
Entries
ConfigPriority=priority-value
次のいずれかとして、この論理構成の優先順位の値を指定します。
目標
ソフト構成、最適。
NORMAL
ソフト構成、DESIRED よりも最適ではありません。 これは、一般的な設定です。
log-config-section が DDInstall.LogConfigOverride セクションで定義され、 config-type 値が指定できない場合は、NORMALを指定する必要があります。
Suboptimal (最適でない)
ソフト構成、NORMAL よりも最適ではありません。
HARDRECONFIG
再構成するにはジャンパーの変更が必要です。
ハードワイ ヤード
変更できません。
RESTART
有効にするには再起動が必要です。
Reboot
これは RESTART と同じです。
POWEROFF
電源サイクルを有効にする必要があります。
DISABLED
ハードウェア/デバイスが無効になっています。
DMAConfig=[DMAattrs:]DMANum[**,**DMANum]...]
DMAattrs は、デバイスが 8 ビット DMA チャネルのみを備え、デバイスが標準システム DMA を使用しているバスで接続されている場合は省略可能です。 それ以外の場合は、次のいずれかの文字を使用できます。
レター | 意味 |
---|---|
D | 32 ビット DMA |
W | 16 ビット DMA |
N | 8 ビット DMA |
デバイスがバス マスター DMA を使用する場合は、使用する DMA チャネルのタイプを示す (相互に排他的な) 文字 A、 B、 C のいずれかを M に使用する必要があります。 A、 B、 C のいずれも指定されていない場合は、標準の DMA チャネルが想定されます。
DMANum は、1 つ以上のバス相対 DMA チャネルを 10 進数として指定し、それぞれコンマ (,) で区切ります。
IOConfig=io-range[,io-range]...
次のいずれかの形式で、デバイスの 1 つ以上の I/O ポート範囲を指定します。
start-end[([decode-mask][:alias-offset][:attr])] (Type 1 I/O 範囲)
start
I/O ポート範囲の開始アドレスを 64 ビットの 16 進数アドレスとして指定します。
end
I/O ポート範囲の終了アドレスを 64 ビットの 16 進数アドレスとしても指定します。
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 範囲)
size
I/O ポート範囲に必要なバイト数を 32 ビットの 16 進数の値として指定します。
min
I/O ポート範囲の可能な最小開始アドレスを 64 ビットの 16 進数アドレスとして指定します。
max
I/O ポート範囲の可能な最大終了アドレスを 64 ビットの 16 進数アドレスとして指定します。
align-mask
必要に応じて、整数 (通常は 32 ビットまたは 64 ビット) のアドレス境界で I/O ポート範囲の開始位置を調整するために、ビットごとの AND 操作で使用される 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]...
次のいずれかの形式で、デバイスの 1 つ以上のメモリ範囲を指定します。
start-end[(attr)] | size@min-max[%align-mask][(attr)]
start
start デバイスメモリ範囲の開始 (バス相対) 物理アドレスを 64 ビットの 16 進数の値として指定します。
end
メモリ範囲の終了アドレスも 64 ビットの 16 進数の値として指定します。
attr
メモリ範囲の属性を、次の文字の 1 つ以上として指定します。
レター | 意味 |
---|---|
R | 読み取り専用 |
W | 書き込み専用 |
RW | 読み取り/書き込み |
C | 組み合わせ書き込み可能 |
H | キャッシュ可能 |
F | プリフェッチ可能 |
D | カード デコード アドレス指定は 24 ビットではなく 32 ビットです |
R と W の両方が指定されている場合、またはどちらも指定されていない場合は、読み取り/書き込みが想定されます。
size
メモリ範囲に必要なバイト数を 32 ビットの 16 進数の値として指定します。
min
デバイス メモリ範囲の可能な最小の開始アドレスを 64 ビットの 16 進数の値として指定します。
max
メモリ範囲の可能な限り最高の終了アドレスを 64 ビットの 16 進数の値として指定します。
align-mask
必要に応じて、ビットごとの AND 操作で使用される 64 ビットマスクを指定して、整数 (通常は 64 ビット) のアドレス境界でデバイス のメモリ範囲の開始を調整します。
アライン マスクを省略した場合、既定のメモリアライメントは 4K 境界 (FFFFF000) にあります。
IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...
デバイスがバス相対、エッジ トリガー IRQ を使用する場合、 IRQattrs は省略されます。 それ以外の場合は、レベルによってトリガーされる IRQ を示す L を指定し、デバイスがこのエントリにリストされている IRQ 行を共有できる場合は LS を指定します。
IRQNum は、デバイスが 10 進数として使用できる 1 つ以上のバス相対 IRQ を指定します。それぞれをコンマ (,) で区切ります。
PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]
CardBus のレジスタを構成したり、デバイスの属性空間にマップする最大 2 つの永続的なメモリ ウィンドウを作成したりします。 ドライバーは、メモリ ウィンドウを使用して ISR から属性領域にアクセスできます。 すべての数値を 16 進数形式で指定します。
PcCardConfig エントリの要素は次のとおりです。
ConfigIndex
PCMCIA バス上のデバイスの 8 ビット PCMCIA 構成インデックスを指定します。
MemoryCardBase1
必要に応じて、最初のメモリ ウィンドウの 32 ビットベース アドレスを指定します。
MemoryCardBase2
必要に応じて、2番目のメモリ ウィンドウの 32 ビットベース アドレスを指定します。
attrs
必要に応じて、デバイスの 1 つ以上の属性をスペースで区切って指定します。 無効な属性指定子は、 PcCardConfig エントリ全体を無効にします。 特定の属性に対して複数の指定子が指定されている場合、その属性はデバイスの個々の I/O またはメモリ ウィンドウに適用されます。 指定子が 1 つだけ指定されている場合、その属性はすべてのウィンドウに適用されます (次の例を参照)。
具体的には、複数の指定子が指定されている場合、左から右への読み取りが見つかった最初の指定子が最初のウィンドウに適用され、次の指定子が 2 番目のウィンドウに適用されます。 1 つの PcCardConfig エントリによって、最大 2 つの I/O ウィンドウと 2 つのメモリ ウィンドウを制御できます。 デバイスに 2 つ以上のメモリ ウィンドウがある場合は、2 つ目の PcCardConfig エントリを含む必要があります。
属性には次のようなものがあります。
属性 | 説明 |
---|---|
W | 16 ビット I/O データ パス。 INF で LogConfig ディレクティブが指定されている場合、既定値は 8 ビットです。 LogConfig ディレクティブが指定されていない場合、ドライバーは 16 ビット I/O を使用します。 |
Sn | ~IOCS16 source. n が 0 の場合、~IOCS16 はデータ サイズ ビットの値に基づいています。 n が 1 の場合、~IOCS16 はデバイスからの ~IOIS16 信号に基づいています。 既定値は、 S1 です。 |
Zn | I/O 8 ビット、0 待機状態。 n が 1 の場合、8 ビット I/O アクセスは追加の待機状態で発生します。 n が 0 の場合、追加の待機状態でアクセスが発生します。 このフラグは、16 ビット I/O には意味がありません。 既定値は、 Z0 です。 |
Xln | I/O 待機状態。 n が 1 の場合、16 ビットのシステム アクセスは、1 つの追加の待機状態で発生します。 既定値は、 XI1 です。 |
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)]...
次のように、多機能デバイスの 1 つの関数の構成レジスタのセットの属性メモリの場所を指定します。
ConfigRegBase
多機能デバイスのこの関数の構成レジスタの属性オフセットを指定します。
ConfigOptions
8 ビット PCMCIA 構成オプション レジスタを指定します。
IoResourceIndex
構成 I/O ベースと制限レジスタの プログラミングに使用するバス ドライバーの IOConfig エントリへのインデックスを指定します。 このインデックスは 0 から始まります。つまり、0 は、この log-config-section の初期 IOConfig エントリを指定します。
attrs
文字 A に設定されている場合は、PCMCIA バス ドライバーに、構成レジスタと状態レジスタでオーディオの有効化を有効にするよう指示します。
各 MfCardConfig エントリは、多機能デバイスの 1 つの機能に関する情報を提供します。 LogConfig ディレクティブのセットがそれぞれ INF の DDInstall.LogConfigOverride セクションの log-config-section を参照している場合、 log-config-section は MfCardConfig エントリを含めて同じ順序で一覧表示されている必要があります。
解説
LogConfig ディレクティブは、メーカーごと、モデルごとの INF DDInstall セクション または INF DDInstall.LogConfigOverride セクションで指定できます。
いくつかの代替論理構成をサポートする非 PnP デバイスの INF では、通常、 DDInstall セクションの下に一連の log-config セクション が定義されます。 各 log-config セクションは 論理構成リソースの個別のセットを指定します。 また、 ConfigPriority エントリも含まれています。このエントリは、デバイスとドライバーのパフォーマンスへの影響、初期化の容易さなどに応じて、各論理構成をランク付けします。
PnP デバイスの場合、PnP マネージャーは、各 PnP デバイスに論理ハードウェア リソースのセットを割り当てます。 つまり、PnP マネージャーは、システム バス ドライバーに対してクエリを実行し、使用中のデバイスごとの I/O バス構成リソースのレポートを受け取り、デバイスごとの論理ハードウェア リソースセットを割り当てて、このようなすべてのリソースの使用におけるシステム全体の最適なバランスを実現します。
その結果、PNP デバイスの DDInstall セクションの LogConfig ディレクティブは無視されます。 PnP デバイスのバスによって報告されるリソースをオーバーライドするには、 DDInstall.LogConfigOverride セクションの下に LogConfig ディレクティブを含めます。 この場合、 log-config-section で指定されたリソースは、バスによって報告されるリソースの代わりに使用されます。
LogConfig ディレクティブを含む DDInstall セクション、または DDInstall.LogConfigOverride セクションにプラットフォーム拡張を追加して、プラットフォーム固有または OS 固有の論理設定を指定することができます。 詳細については、 INF ファイルの作成に関する記事を参照してください。
指定された log-config-section 名は INF ファイルに対して一意である必要がありますが、同じデバイスの他の INF DDInstall セクションの LogConfig ディレクティブによって参照できます。 INF ライターで定義された各セクション名は、INF ファイル内で一意である必要があり、セクション名を定義するための一般的な規則に従う必要があります。 これらの規則の詳細については、「INF ファイルの一般的な構文規則」を参照してください。
各 log-config-section で使用できる ConfigPriority エントリは 1 つだけです。 デバイスのハードウェア リソース要件によっては、他のエントリが複数存在する場合があります。
1つ以上の MfCardConfig= エントリは、複合機用INFの DDInstall.LogConfigOverride セクションの LogConfig ディレクティブによって参照される log-config-section にのみ表示できます。 多機能デバイスの INF ファイルの詳細については、「多機能デバイスのサポート」を参照してください。
LogConfig で参照されるセクションのエントリと値
log-config-section から、システム インストーラーはバイナリ論理構成レコードをビルドし、レジストリに格納します。
INF ファイルには、任意の数のデバイス ごとの log-config-section を含めることができます。 ただし、このような各セクションには、1 つのデバイスをインストールするための完全な情報が含まれている必要があります。 一般に、INF では、各 log-config セクション の エントリを同じ順序で指定する 必要があります。 INF は、ドライバーがデバイスを初期化する方法に最適な順序で、エントリの各セットを指定する必要があります。
特定のデバイスに対 して複数の log-config-section が存在する場合は、インストール時にこれらの INF セクションの 1 つだけが使用されます。 このような INF ファイルは、そのような各 log-config-sectionで提供される ConfigPriority 値で使用されるセクションを部分的に制御します。 つまり、システム インストーラーは INF ファイル内の構成の優先順位を優先しようとしますが、既にインストールされているデバイスとの競合が見つかった場合は、下位のランク付けされた論理構成を選択する可能性があります。
インストール時に、特定 の log-config-section 内の各エントリから 1 つだけのリソースが選択され、特定のデバイスに割り当てられます。 特定のデバイスで同じ種類の複数のリソースが必要な場合は、その種類のエントリのセットを log-config-section で使用する必要があります。
たとえば、特定のデバイスに対して 2 つの I/O ポート範囲を確保するには、そのデバイスの log-config-section で 2 つの IOConfig= エントリを指定する必要があります。 一方、デバイスに IRQ が必要ない場合、INF は log-config セクションから IRQConfig エントリを省略できます。
例
この例では、PCMCIA デバイスの有効な PcCardConfig エントリをいくつか示します。
PcCardConfig=0:E0000:F0000(W)
PcCardConfig=0:E0000(M)
PcCardConfig=0::(W)
PcCardConfig=0(W)
この例は、 IOConfig エントリの Type 1 I/O 範囲仕様を示しています。 これは、1F8、2F8、または 3F8 から始まる I/O ポート領域 (サイズが 8 バイト) を指定します。
IOConfig=1F8-1FF, 2F8-2FF, 3F8-3FF
これに対し、この例では、 IOConfig エントリの Type 2 I/O 範囲の仕様を示します。 300、308、310、318、320、または 328 から始まる I/O ポート領域、8 バイトのサイズを指定します。
IOConfig=8@300-32F%FF8
この例では、4 ポート デバイスの IOConfig エントリのセットを示します。それぞれ、次のポートから 0x400 バイトオフセットされる I/O ポート範囲を指定しています。
IoConfig=0x200-0x21f
IoConfig=0x600-0x61f
IoConfig=0xA00-0xA1f
IoConfig=0xE00-0xE1f
次の 2 つの例は、一般的な MemConfig エントリを示しています。
この例では、C0000 または D0000 から開始できる 32K バイトのメモリ領域を指定します。
MemConfig=C0000-C7FFF, D0000-D7FFF
この例では、64K 境界から 32k バイトのメモリ領域を指定します。
MemConfig=8000@C0000-D7FFF%F0000
この例では、システム HDC クラス INF ファイルが、一般的な ESDI ハード ディスク コントローラ用にいくつかの log-config-sections を設定し、特定の IDE コントローラ用に DDInstall.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 エントリの使用方法の例については、「不完全な構成レジスタ アドレスを持つ PC カードのサポート」を参照してください。