Dyrektywa INF LogConfig

Caution

Począwszy od Windows 11 wersji 22H2, pakiet sterowników korzystający z tej dyrektywy nie kwalifikuje się już do podpisu z Witryny Hardware Developer Center.

Uniwersalne pakiety sterowników i sterowniki Windows nie mogą używać tej dyrektywy.

Dyrektywa LogConfig odwołuje się do co najmniej jednej sekcji zdefiniowanej przez moduł zapisywania INF, z których każdy określa logiczną konfigurację zasobów sprzętowych − wiersze żądania przerwania, zakresy pamięci, porty we/wy i kanały DMA, które mogą być używane przez urządzenie. Każda sekcja log-config-określa alternatywny zestaw zasobów sprzętowych względnych magistrali, które mogą być używane przez urządzenie.

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

Pliki INF dla urządzeń innych niż PnP używają tej dyrektywy do tworzenia podstawowych konfiguracji.

Pliki INF dla urządzeń PnP używają tej dyrektywy tylko do tworzenia konfiguracji zastąpienia.

Każda nazwana sekcja, do którego odwołuje się dyrektywa LogConfig , ma następującą postać:

[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)]...]
...

Wpisy

ConfigPriority=priorytet-wartość
Określa wartość priorytetu dla tej konfiguracji logicznej jako jedną z następujących opcji:

ŻĄDANE
Konfiguracja nietrwała, najbardziej optymalna.

NORMAL
Nietrwałe skonfigurowane, mniej optymalne niż ŻĄDANE. Jest to typowe ustawienie.

Należy określić normalny, jeśli sekcja log-config-section została zdefiniowana w DDInstall. Sekcja LogConfigOverride i nie można określić żadnej wartości typu konfiguracji .

NIEOPTYMALNY
Nietrwałe, mniej optymalne niż NORMALNY.

HARDRECONFIG
Wymaga zmiany skoczka w celu ponownego skonfigurowania.

HARDWIRED
Nie można zmienić.

Ponowne uruchomienie
Wymaga ponownego uruchomienia, aby zaczęły obowiązywać.

PONOWNE URUCHAMIANIE
Jest to takie samo, jak w przypadku ponownego uruchamiania.

POWEROFF
Wymaga, aby cykl zasilania obowiązywał.

DISABLED
Sprzęt/urządzenie jest wyłączone.

DMAConfig=[DMAattrs:]DmANum[**,**DMANum]...]
DmAattrs jest opcjonalny, jeśli urządzenie jest podłączone do magistrali, która ma tylko 8-bitowe kanały DMA, a urządzenie korzysta ze standardowego systemowego dma. W przeciwnym razie może to być jedna z następujących liter:

List Meaning
D 32-bitowa dma
W 16-bitowa dma
N 8-bitowa dma

Jeśli urządzenie korzysta z magistrali master DMA, należy użyć języka M z jedną z następujących (wzajemnie wykluczających się) liter, która wskazuje typ używanego kanału DMA: A, B lub F. Jeśli nie określono żadnego ze standardowych kanałów DMA, A, B lub F .

DmANum określa co najmniej jeden kanał DMA względny magistrali jako liczby dziesiętne, każdy oddzielony od następnego przecinkiem (,).

Konfiguracja we/wy=io-range[,io-range]...
Określa co najmniej jeden zakres portów we/wy dla urządzenia, w jednej z następujących formularzy:

start-end[([decode-mask][:alias-offset][:attr])] (Typ 1 zakres operacji we/wy)

Ekran startowy
Określa adres początkowy zakresu portów we/wy jako 64-bitowy adres szesnastkowy.

koniec
Określa adres końcowy zakresu portów we/wy, również jako 64-bitowy adres szesnastkowy.

dekoduj maskę
Definiuje typ aliasu i może być dowolnym z następujących elementów:

Wartość maski Meaning IOR_Alias wartość
3ff Dekodowanie 10-bitowe 0x04
fff Dekodowanie 12-bitowe 0x10
ffff Dekodowanie 16-bitowe 0x00
0 Dekodowanie dodatnie 0xFF

przesunięcie aliasu
Nie używany.

attr
Określa literę M , jeśli dany zakres jest w pamięci systemowej. W przypadku pominięcia dany zakres znajduje się w obszarze portów we/wy.

rozmiar@min-max[%align-mask][[decode-mask][:alias-offset][:attr])] (Typ 2 zakres operacji we/wy)

rozmiar
Określa liczbę bajtów wymaganych dla zakresu portów we/wy jako 32-bitową wartość szesnastkowa.

min
Określa najniższy możliwy adres początkowy zakresu portów we/wy jako 64-bitowy adres szesnastkowy.

max
Określa najwyższy możliwy adres końcowy zakresu portów we/wy jako 64-bitowy adres szesnastkowy.

wyrównanie maski
Opcjonalnie określa maskę 64-bitową używaną w bitowej operacji AND, aby wyrównać początek zakresu portów we/wy na całce (zwykle 32-bitowej lub 64-bitowej) granicy adresu.

dekoduj maskę
Definiuje typ aliasu i może być dowolnym z następujących elementów:

Wartość maski Meaning IOR_Alias wartość
3ff Dekodowanie 10-bitowe 0x04
fff Dekodowanie 12-bitowe 0x10
ffff Dekodowanie 16-bitowe 0x00
0 Dekodowanie dodatnie 0xFF

przesunięcie aliasu
Nie używany.

attr
Określa literę M , jeśli dany zakres jest w pamięci systemowej. W przypadku pominięcia dany zakres znajduje się w obszarze portów we/wy.

MemConfig=mem-range[,mem-range]...
Określa jeden lub więcej zakresów pamięci dla urządzenia w jednej z następujących form:

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

Ekran startowy
Określa początkowy (względny magistrala) adres fizyczny zakresu pamięci urządzenia jako 64-bitową wartość szesnastkowa.

koniec
Określa końcowy adres fizyczny zakresu pamięci, również jako 64-bitową wartość szesnastkowa.

attr
Określa atrybuty zakresu pamięci jako co najmniej jedną z następujących liter:

List Meaning
R Tylko odczyt
W Write-only
RW Odczyt/zapis
C Dozwolone połączone zapisy
H Możliwość buforowania
F Możliwe do pobrania wstępnego
D Adresowanie dekodowania karty jest 32-bitowe, a nie 24-bitowe

Jeśli określono zarówno język R , jak i W lub jeśli żaden z nich nie jest określony, zakłada się, że przyjmuje się odczyt/zapis.

rozmiar
Określa liczbę bajtów wymaganych w zakresie pamięci jako 32-bitową wartość szesnastkowa.

min
Określa najniższy możliwy adres początkowy zakresu pamięci urządzenia jako 64-bitową wartość szesnastkowa.

max
Określa najwyższy możliwy adres końcowy zakresu pamięci jako wartość szesnastkowa 64-bitowa.

wyrównanie maski
Opcjonalnie określa maskę 64-bitową używaną w bitowej operacji AND, aby wyrównać początek zakresu pamięci urządzenia na granicy adresowej całkowitej (zwykle 64-bitowej).

Jeśli maska wyrównania zostanie pominięta, domyślne wyrównanie pamięci znajduje się na granicy 4K (FFFFF000).

IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...
Środowisko IRQattrs zostanie pominięte, jeśli urządzenie korzysta z irQ irQ wyzwalanego przez magistralę względną. W przeciwnym razie określ L , aby wskazać poziom wyzwalany irQ i LS , jeśli urządzenie może współużytkować wiersze IRQ wymienione w tym wpisie.

IrQNum określa co najmniej jeden względny ir magistrali Często zadawane pytania, których urządzenie może używać jako liczb dziesiętnych, z których każde jest oddzielone od następnego przecinkiem (,).

PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]
Konfiguruje rejestry CardBus i/lub tworzy maksymalnie dwa stałe okna pamięci mapujące na przestrzeń atrybutów urządzenia. Sterownik może używać okien pamięci do uzyskiwania dostępu do przestrzeni atrybutów z isr. Określ wszystkie wartości liczbowe w formacie szesnastkowym.

Elementy wpisu PcCardConfig są następujące:

ConfigIndex
Określa 8-bitowy indeks konfiguracji PCMCIA dla urządzenia w magistrali PCMCIA.

MemoryCardBase1
Opcjonalnie określa 32-bitowy adres podstawowy dla pierwszego okna pamięci.

MemoryCardBase2
Opcjonalnie określa 32-bitowy adres podstawowy dla drugiego okna pamięci.

attrs
Opcjonalnie określa co najmniej jeden atrybut urządzenia rozdzielony spacjami. Nieprawidłowy specyfikator atrybutu unieważnia cały wpis PcCardConfig . Jeśli podano więcej niż jeden specyfikator określonego atrybutu, atrybuty są stosowane do poszczególnych okien we/wy lub pamięci dla urządzenia. Jeśli jest podany tylko jeden specyfikator, ten atrybut jest stosowany do wszystkich okien (zobacz poniższy przykład).

W szczególności, jeśli podano wiele specyfikatorów, pierwszy specyfikator znaleziony odczyt od lewej do prawej zostanie zastosowany do pierwszego okna, a następny specyfikator zastosowany do drugiego okna. Maksymalnie dwa okna we/wy i dwa okna pamięci mogą być kontrolowane przez pojedynczy wpis PcCardConfig . Jeśli urządzenie ma więcej niż dwa okna pamięci, należy dołączyć drugi wpis PcCardConfig .

Atrybuty obejmują:

Attribute Opis
W 16-bitowa ścieżka danych we/wy.

Wartość domyślna to 8-bitowa, jeśli INF określa dyrektywę LogConfig . Jeśli nie określono dyrektywy LogConfig , sterownik używa 16-bitowych operacji we/wy.
Sn ~Źródło IOCS16.

Jeśli n ma wartość 0, wartość ~IOCS16 jest oparta na wartości bitu rozmiaru danych. Jeśli n ma wartość 1, ~IOCS16 jest oparty na sygnałie ~IOIS16 z urządzenia. Wartość domyślna to S1.
Zn We/Wy 8-bitowy, zero stanu oczekiwania.

Jeśli n ma wartość 1, dostęp 8-bitowy we/wy występuje z zerowymi dodatkowymi stanami oczekiwania. Jeśli n ma wartość 0, dostęp występuje z dodatkowymi stanami oczekiwania. Ta flaga nie ma znaczenia dla 16-bitowych operacji we/wy. Wartość domyślna to Z0.
Xln Stany oczekiwania we/wy.

Jeśli n ma wartość 1, dostęp do systemu 16-bitowego występuje z jednym dodatkowym stanem oczekiwania. Wartość domyślna to Xl1.
M 16-bitowa ścieżka danych pamięci. Wartość domyślna to 8-bitowa.
M8 8-bitowa ścieżka danych pamięci.
XMn Stany oczekiwania na pamięć, gdzie n może być 0, 1, 2 lub 3.

Ta wartość określa liczbę dodatkowych stanów oczekiwania na dostęp 16-bitowy do okna pamięci. Wartość domyślna to XM3.
A Zakres pamięci do zamapowania jako pamięć atrybutu.
C Zakres pamięci do zamapowania jako pamięć pospolita (wartość domyślna).

Na przykład wartość attrs (WB CA M XM1 XI0) przekłada się na następujące:

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)]...
Określa lokalizację pamięci atrybutu zestawu rejestrów konfiguracji dla jednej funkcji urządzenia wielofunkcyjnego w następujący sposób:

ConfigRegBase
Określa przesunięcie atrybutu rejestrów konfiguracji dla tej funkcji urządzenia wielofunkcyjnego.

KonfiguracjaOpcje
Określa 8-bitową opcję konfiguracji PCMCIA rejestru.

IoResourceIndex
Określa indeks wpisu IOConfig dla sterownika magistrali do użycia w programowaniu bazy we/wy konfiguracji i limit rejestrów. Ten indeks jest oparty na zera, czyli zero wyznacza początkowy wpis IOConfig w tej sekcji log-config-section.

attrs
Jeśli jest ustawiona na literę A, przekierowuje sterownik magistrali PCMCIA, aby włączyć włączenie dźwięku w rejestrze konfiguracji i stanie.

Każdy wpis MfCardConfig zawiera informacje o jednej funkcji urządzenia wielofunkcyjnego. Gdy zestaw dyrektyw LogConfig odwołuje się do dyskretnej sekcji log-config-section w DDInstall inF. Sekcja LogConfigOverride , każda sekcja log-config-musi zawierać swoje wpisy, w tym wpisy MfCardConfig wymienione w tej samej kolejności.

Remarks

Dyrektywę LogConfig można określić w dowolnej sekcji inf DDInstall dla poszczególnych producentów lub INF DDInstall. Sekcja LogConfigOverride.

InF dla urządzenia innego niż PnP obsługującego kilka alternatywnych konfiguracji logicznych zwykle definiuje zestaw sekcji log-config-section w sekcji DDInstall . Każda sekcja log-config-określa dyskretny zestaw zasobów konfiguracji logicznej. Zawiera również wpis ConfigPriority , który klasyfikuje każdą konfigurację logiczną zgodnie z jego wpływem na wydajność urządzenia i sterownika, łatwość inicjowania itd.

W przypadku urządzeń PnP menedżer PnP przypisuje zestaw zasobów logicznych sprzętu do każdego urządzenia PnP. Oznacza to, że menedżer PnP wysyła zapytanie do sterowników magistrali systemu, odbiera raporty dotyczące używanych zasobów konfiguracji we/wy dla poszczególnych urządzeń i przypisuje zestawy zasobów logicznych sprzętu w celu osiągnięcia najlepszej równowagi całego systemu w użyciu wszystkich takich zasobów.

W związku z tym dyrektywa LogConfig w sekcji DDInstall jest ignorowana dla urządzeń PnP. Aby zastąpić zasoby zgłaszane przez magistralę dla urządzenia PnP, uwzględnij dyrektywę LogConfig w obszarze DDInstall. Sekcja LogConfigOverride . W takim przypadku zasoby określone w sekcji log-config-są używane zamiast tych zgłaszanych przez magistralę.

Rozszerzenia platformy można dodać do sekcji DDInstall zawierającej dyrektywę LogConfig lub do DDInstall. Sekcja LogConfigOverride w celu określenia konfiguracji logicznych specyficznych dla platformy lub systemu operacyjnego. Aby uzyskać więcej informacji, zobacz Tworzenie pliku INF.

Dana nazwa sekcji log-config-section musi być unikatowa dla pliku INF, ale może być przywoływane przez dyrektywy LogConfig w innych sekcjach INF DDInstall dla tych samych urządzeń. Każda nazwa sekcji utworzonej przez moduł zapisywania INF musi być unikatowa w pliku INF i musi być zgodna z ogólnymi regułami definiowania nazw sekcji. Aby uzyskać więcej informacji na temat tych reguł, zobacz Ogólne reguły składni dla plików INF.

W każdej sekcji log-config-config-section można używać tylko jednego wpisu ConfigPriority. W zależności od wymagań dotyczących zasobów sprzętowych urządzenia może istnieć więcej niż jeden z pozostałych wpisów.

Co najmniej jeden wpis MfCardConfig= może być wyświetlany tylko w sekcji log-config-, do której odwołuje się dyrektywa LogConfig w DDInstall. LogConfigOverride sekcji INF dla urządzenia wielofunkcyjnego. Aby uzyskać więcej informacji na temat plików INF dla urządzeń wielofunkcyjnych, zobacz Obsługa urządzeń wielofunkcyjnych.

LogConfig-Referenced wpisy i wartości sekcji

W sekcji log-config-installer system tworzy binarne rekordy konfiguracji logicznej i przechowuje je w rejestrze.

Plik INF może zawierać dowolną liczbę sekcji log-config-na urządzeniu. Jednak każda taka sekcja musi zawierać pełne informacje dotyczące instalowania jednego urządzenia. Ogólnie rzecz biorąc, inf powinien określać wpisy w każdej z jego sekcji log-config-w tej samej kolejności. InF powinien określać każdy zestaw wpisów w kolejności najlepiej dopasowanej do sposobu inicjowania urządzenia przez sterownik.

Jeśli dla danego urządzenia znajduje się więcej niż jedna sekcja log-config-section , podczas instalacji jest używany tylko jeden z tych sekcji INF. Taki plik INF częściowo kontroluje, które takie sekcje są używane z wartością ConfigPriority , którą dostarcza w każdej takiej sekcji log-config-section. Oznacza to, że instalatorzy systemu próbują przestrzegać wszelkich priorytetów konfiguracji w pliku INF, ale mogą wybrać niższą rangę konfiguracji logicznej, jeśli zostanie znaleziony konflikt z już zainstalowanym urządzeniem.

Podczas instalacji wybierany jest jeden i tylko jeden zasób z każdego wpisu w danej sekcji log-config-section i przypisany do określonego urządzenia. Jeśli określone urządzenie wymaga więcej niż jednego zasobu tego samego typu, należy użyć zestawu wpisów tego typu w sekcjach log-config..

Aby na przykład zapewnić dwa zakresy portów we/wy dla określonego urządzenia, należy określić dwa wpisy IOConfig= w sekcji log-config-section dla tego urządzenia. Z drugiej strony, jeśli urządzenie nie wymaga środowiska IRQ, jego inf może pominąć wpis IRQConfig z sekcji log-config-sections.

Examples

W tym przykładzie przedstawiono niektóre prawidłowe wpisy PcCardConfig dla urządzenia PCMCIA.

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

W tym przykładzie przedstawiono specyfikację zakresu we/wy typu 1 we wpisie IOConfig . Określa region portu we/wy, osiem bajtów w rozmiarze, który może zaczynać się od 1F8, 2F8 lub 3F8.

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

Z kolei w tym przykładzie przedstawiono specyfikację zakresu we/wy typu 2 we wpisie IOConfig . Określa region portu we/wy, osiem bajtów w rozmiarze, który może zaczynać się od 300, 308, 310, 318, 320 lub 328.

IOConfig=8@300-32F%FF8

W tym przykładzie przedstawiono zestaw wpisów IOConfig dla urządzenia z czterema portami, z których każdy określa zakres portów we/wy, który jest przesunięty przez 0x400 bajty od następnego.

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

W dwóch następnych przykładach przedstawiono typowe wpisy MemConfig .

W tym przykładzie określono region pamięci o rozmiarze 32K bajtów, który może zaczynać się od C0000 lub D0000.

MemConfig=C0000-C7FFF, D0000-D7FFF

W tym przykładzie określono region pamięci 32k bajtów rozpoczynający się od granic 64K.

MemConfig=8000@C0000-D7FFF%F0000

W tym przykładzie pokazano, jak systemowy plik INF klasy HDC konfiguruje kilka sekcji log-config-sections dla ogólnych kontrolerów dysków twardych ESDI i używa DDInstall. Sekcja LogConfigOverride dla określonego kontrolera IDE.

[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)

Aby zapoznać się z przykładami użycia wpisów MfCardConfig , zobacz Obsługa kart PC z niekompletnymi adresami rejestru konfiguracji.

Informacje dodatkowe

DDInstall

DDInstall. FactDef