Директива INF LogConfig

Внимание!

Начиная с Windows 11 версии 22H2, пакет драйвера, использующий эту директиву, больше не может быть подписан центром разработчиков оборудования.

Пакеты универсальных драйверов и драйверы Windows не могут использовать эту директиву.

Директива LogConfig ссылается на один или несколько разделов, определенных записью INF, каждый из которых определяет логическую конфигурацию аппаратных ресурсов — строки запросов прерывания, диапазоны памяти, порты ввода-вывода и каналы DMA, которые могут использоваться устройством. В каждом разделе log-config-section указывается альтернативный набор аппаратных ресурсов относительно шины, которые могут использоваться устройством.

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

Inf-файлы для устройств, отличных от PnP, используют эту директиву для создания базовых конфигураций.

Inf-файлы для устройств PnP используют эту директиву только для создания конфигураций переопределения.

Каждый именованный раздел, на который ссылается директива 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. Это типичный параметр.

Необходимо указать NORMAL, если раздел log-config-section был определен в DDInstall. Раздел LogConfigOverride , и значение типа конфигурации не может быть указано.

НЕОПТИМАЛЬНЫЙ
Программная настройка, менее оптимальная, чем NORMAL.

HARDRECONFIG
Требует изменения перемычки для перенастройки.

ПРОВОДНЫХ
Невозможно изменить.

RESTART
Требует перезагрузки, чтобы вступила в силу.

ПЕРЕЗАГРУЗКИ
Это то же самое, что и RESTART.

POWEROFF
Требуется, чтобы цикл питания влил в силу.

DISABLED
Оборудование или устройство отключено.

DMAConfig=[DMAattrs:]DMANum[**,*DMANum]...]
DmAattrs является необязательным, если устройство подключено к шине, которая имеет только 8-разрядные каналы DMA и устройство использует стандартную систему DMA. В противном случае это может быть одна из следующих букв:

Письмо Значение
D 32-разрядная версия DMA
W 16-разрядная версия DMA
N 8-разрядный DMA

Если устройство использует шину master DMA, необходимо использовать M с одной из следующих (взаимоисключающих) букв, указывающих тип используемого канала DMA: A, B или F. Если не указаны ни A, B, ни F, предполагается стандартный канал DMA.

DMANum указывает один или несколько каналов DMA, относящихся к шине, в виде десятичных чисел, каждый из которых отделен от следующего запятой (,).

IOConfig=io-range[,io-range]...
Указывает один или несколько диапазонов портов ввода-вывода для устройства в одной из следующих форм:

start-end[([decode-mask][:alias-offset][:attr])] (диапазон ввода-вывода типа 1)

start
Указывает начальный адрес диапазона портов ввода-вывода в виде 64-разрядного шестнадцатеричного адреса.

end
Указывает конечный адрес диапазона портов ввода-вывода, а также 64-разрядный шестнадцатеричный адрес.

декодирование маски
Определяет тип псевдонима и может иметь любой из следующих типов:

Значение маски Значение значение IOR_Alias
3ff 10-битное декодирование 0x04
Fff 12-битное декодирование 0x10
Ffff 16-битное декодирование 0x00
0 Положительное декодирование 0xFF

смещение псевдонима
Не используется.

Attr
Указывает букву M , если заданный диапазон находится в системной памяти. Если этот параметр опущен, указанный диапазон находится в пространстве портов ввода-вывода.

Размер@min-max[%align-mask][([decode-mask][:alias-offset][:attr])] (диапазон ввода-вывода типа 2)

size
Указывает количество байтов, необходимое для диапазона портов ввода-вывода, в виде 32-разрядного шестнадцатеричного значения.

min
Указывает наименьший возможный начальный адрес диапазона портов ввода-вывода в виде 64-разрядного шестнадцатеричного адреса.

max
Указывает максимально возможный конечный адрес диапазона портов ввода-вывода в виде 64-разрядного шестнадцатеричного адреса.

Выравнивание маски
При необходимости задает 64-разрядную маску, используемую в побитовой операции AND для выравнивания начала диапазона портов ввода-вывода по целочисленной (обычно 32- или 64-разрядной) границе адресов.

декодирование маски
Определяет тип псевдонима и может иметь любой из следующих типов:

Значение маски Значение значение IOR_Alias
3ff 10-битное декодирование 0x04
Fff 12-битное декодирование 0x10
Ffff 16-битное декодирование 0x00
0 Положительное декодирование 0xFF

смещение псевдонима
Не используется.

Attr
Указывает букву M , если заданный диапазон находится в системной памяти. Если этот параметр опущен, указанный диапазон находится в пространстве портов ввода-вывода.

MemConfig=mem-range[,mem-range]...
Задает один или несколько диапазонов памяти для устройства в одной из следующих форм:

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

start
Задает начальный (относительно шины) физический адрес диапазона памяти устройства в виде 64-разрядного шестнадцатеричного значения.

end
Указывает конечный физический адрес диапазона памяти, а также в виде 64-разрядного шестнадцатеричного значения.

Attr
Задает атрибуты диапазона памяти в виде одной или нескольких из следующих букв:

Письмо Значение
R Только для чтения
W Только на запись
RW Чтение/запись
C Разрешена объединенная запись
H Кэшируемые
Ж Предварительная выборка
D Адресация декодирования карточек является 32-разрядной, а не 24-разрядной

Если указаны как R , так и W или если ни то, ни другое не указано, предполагается чтение и запись.

size
Указывает количество байтов, необходимое в диапазоне памяти, в виде 32-разрядного шестнадцатеричного значения.

min
Задает наименьший возможный начальный адрес диапазона памяти устройства в виде 64-разрядного шестнадцатеричного значения.

max
Задает максимально возможный конечный адрес диапазона памяти в виде 64-разрядного шестнадцатеричного значения.

Выравнивание маски
При необходимости задает 64-разрядную маску, которая используется в побитовой операции AND для выравнивания начала диапазона памяти устройства по целой (обычно 64-разрядной) границе адреса.

Если параметр align-mask опущен, выравнивание памяти по умолчанию находится на границе 4 КБ (FFFFF000).

IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...
IRQattrs опущены, если устройство использует irQ относительно шины, активируется по краю. В противном случае укажите L , чтобы указать irQ с активацией уровня и LS , если устройство может совместно использовать строки IRQ, перечисленные в этой записи.

IRQNum указывает один или несколько относительных к шине IRQ, которые устройство может использовать в качестве десятичных чисел, каждый из которых отделен от следующего запятой (,).

PcCardConfig=ConfigIndex[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]
Настраивает регистры CardBus и (или) создает до двух окон постоянной памяти, которые сопоставляют с пространством атрибутов устройства. Драйвер может использовать окна памяти для доступа к пространству атрибутов из ISR. Укажите все числовые значения в шестнадцатеричном формате.

Элементы записи PcCardConfig :

ConfigIndex
Указывает 8-разрядный индекс конфигурации PCMCIA для устройства на шине PCMCIA.

MemoryCardBase1
При необходимости задает 32-разрядный базовый адрес для первого окна памяти.

MemoryCardBase2
При необходимости указывает 32-разрядный базовый адрес для второго окна памяти.

attrs
При необходимости задает один или несколько атрибутов устройства, разделенных пробелами. Недопустимый описатель атрибута делает недействительным всю запись PcCardConfig . Если для определенного атрибута указано несколько описателя, атрибуты применяются к отдельным окнам ввода-вывода или памяти для устройства. Если указан только один описатель, этот атрибут применяется ко всем окнам (см. следующий пример).

В частности, если указано несколько описателей, первый описатель, найденный с чтением слева направо, будет применен к первому окну, а следующий описатель — ко второму окну. С помощью одной записи PcCardConfig можно управлять не более чем двумя окнами ввода-вывода и двумя окнами памяти. Если устройство имеет более двух окон памяти, необходимо включить вторую запись PcCardConfig .

Она имеет атрибуты:

attribute Описание
W Путь к данным 16-разрядного ввода-вывода.

Значение по умолчанию — 8 бит, если inf указывает директиву LogConfig . Если директива LogConfig не указана, драйвер использует 16-разрядные операции ввода-вывода.
Sn ~Источник IOCS16.

Если n равно 0, то ~IOCS16 основывается на значении бита datasize. Если n имеет значение 1, ~IOCS16 основан на сигнале ~IOIS16 от устройства. Значение по умолчанию — S1.
Zn 8-разрядное состояние ввода-вывода с нулевым состоянием ожидания.

Если n равно 1, 8-разрядные операции ввода-вывода выполняются с нулевым дополнительным состоянием ожидания. Если n равно 0, доступ осуществляется с дополнительными состояниями ожидания. Этот флаг не имеет значения для 16-разрядных операций ввода-вывода. Значение по умолчанию — Z0.
Xln Состояния ожидания ввода-вывода.

Если n равно 1, 16-разрядные системные доступы происходят с одним дополнительным состоянием ожидания. Значение по умолчанию — Xl1.
M Путь к данным 16-разрядной памяти. Значение по умолчанию — 8 бит.
M8 Путь к данным в 8-разрядной памяти.
XMn Состояния ожидания памяти, где n может быть 0, 1, 2 или 3.

Это значение определяет количество дополнительных состояний ожидания для 16-разрядного доступа к окну памяти. Значение по умолчанию — XM3.
А Диапазон памяти для сопоставления с памятью атрибутов.
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 для драйвера шины, который будет использоваться при программировании базовых и лимитных регистров ввода-вывода конфигурации. Этот индекс основан на нулях, то есть нуль обозначает начальную запись IOConfig в этом разделе log-config-section.

attrs
Если задана буква A, драйвер шины PCMCIA может включить включение звука в регистрах конфигурации и состояния.

Каждая запись MfCardConfig предоставляет сведения об одной функции многофункционального устройства. Если набор директив LogConfig ссылается на дискретный раздел log-config-section в DDInstall INF. LogConfigOverride , каждый раздел log-config-section должен содержать свои записи, включая записи MfCardConfig , перечисленные в том же порядке.

Комментарии

Директиву LogConfig можно указать в любом разделе INF DDInstall или INF DDInstall для каждого производителя, для отдельных моделей. Раздел LogConfigOverride.

Inf для устройства, отличного от PnP, которое поддерживает несколько альтернативных логических конфигураций, обычно определяет набор разделов log-config в разделе DDInstall . Каждый раздел log-config указывает дискретный набор ресурсов логической конфигурации. Он также включает запись ConfigPriority , которая ранжирует каждую логическую конфигурацию в соответствии с ее воздействием на производительность устройства и драйвера, простоту инициализации и т. д.

Для устройств PnP диспетчер PnP назначает набор логических аппаратных ресурсов каждому устройству PnP. Это значит, что диспетчер PnP запрашивает драйверы системной шины, получает отчеты о используемых ресурсах конфигурации шины ввода-вывода для каждого устройства и назначает наборы логических аппаратных ресурсов для достижения наилучшего баланса на уровне системы при использовании всех таких ресурсов.

В результате директива LogConfig в разделе DDInstall игнорируется для устройств PnP. Чтобы переопределить ресурсы, сообщаемые шиной для устройства PnP, добавьте директиву LogConfig в параметр DDInstall. Раздел LogConfigOverride . В этом случае используются ресурсы, указанные в разделе log-config-section , а не ресурсы, о которых сообщает шина.

Расширения платформы можно добавить в раздел DDInstall , содержащий директиву LogConfig , или в DDInstall. Раздел LogConfigOverride , чтобы указать логические конфигурации для конкретной платформы или ОС. Дополнительные сведения см. в разделе Создание INF-файла.

Заданное имя раздела log-config-section должно быть уникальным для INF-файла, но на него могут ссылаться директивы LogConfig в других разделах INF DDInstall для того же устройства. Каждое имя раздела, созданного с помощью ЗАПИСИ INF, должно быть уникальным в INF-файле и соответствовать общим правилам определения имен разделов. Дополнительные сведения об этих правилах см. в статье Общие правила синтаксиса для ФАЙЛОВ INF.

В каждом разделе log-config-section можно использовать только одну запись ConfigPriority. В зависимости от требований к аппаратным ресурсам устройства может быть несколько записей.

Одна или несколько записей MfCardConfig= могут отображаться только в разделе log-config, на который ссылается директива LogConfig в DDInstall. Раздел LogConfigOverride inf для многофункционального устройства. Дополнительные сведения о INF-файлах для многофункциональных устройств см. в разделе Поддержка многофункциональных устройств.

Записи и значения раздела LogConfig-Referenced

Из раздела log-config установщик системы создает двоичные записи логической конфигурации и сохраняет их в реестре.

INF-файл может содержать любое количество разделов log-config для каждого устройства. Однако каждый такой раздел должен содержать полную информацию для установки одного устройства. Как правило, inf следует указывать записи в каждом из разделов log-config-section в том же порядке. Inf должен указывать каждый набор записей в порядке, который лучше всего подходит для того, как драйвер инициализирует свое устройство.

Если для данного устройства имеется несколько разделов log-config-section , во время установки используется только один из этих разделов INF. Такой INF-файл частично определяет, какой такой раздел используется со значением ConfigPriority , которое он предоставляет в каждом таком разделе log-config-section. То есть установщики системы пытаются соблюдать все приоритеты конфигурации в INF-файле, но при обнаружении конфликта с уже установленным устройством могут выбрать более ранжированную логическую конфигурацию.

Во время установки выбирается только один ресурс из каждой записи в данном разделе log-config-section и назначается конкретному устройству. Если конкретному устройству требуется несколько ресурсов одного типа, в разделах log-config-section необходимо использовать набор записей этого типа.

Например, чтобы обеспечить два диапазона портов ввода-вывода для конкретного устройства, в разделе log-config-section для этого устройства необходимо указать две записи IOConfig=. С другой стороны, если устройству не требуется IRQ, его INF-файл может опустить запись IRQConfig в log-config-sections.

Примеры

В этом примере показаны некоторые допустимые записи PcCardConfig для устройства PCMCIA.

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

В этом примере показана спецификация диапазона ввода-вывода типа 1 в записи IOConfig . Он задает регион порта ввода-вывода размером восемь байтов, который может начинаться с 1F8, 2F8 или 3F8.

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

В отличие от этого, в этом примере показана спецификация диапазона ввода-вывода типа 2 в записи IOConfig . Он задает регион порта ввода-вывода размером восемь байтов, который может начинаться с 300, 308, 310, 318, 320 или 328.

IOConfig=8@300-32F%FF8

В этом примере показан набор записей IOConfig для устройства с четырьмя портами, каждый из которых указывает диапазон портов ввода-вывода, который смещается на 0x400 байт от следующего.

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

В следующих двух примерах показаны типичные записи MemConfig .

В этом примере задается область памяти размером 32 КБ, которая может начинаться с C00000 или D0000.

MemConfig=C0000-C7FFF, D0000-D7FFF

В этом примере задается область памяти размером 32 КБ, начиная с границ 64 КБ.

MemConfig=8000@C0000-D7FFF%F0000

В этом примере показано, как INF-файл класса HDC системы настраивает несколько разделов log-config-section для универсальных контроллеров жестких дисков ESDI и использует 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 с неполными адресами регистрации конфигурации.

См. также раздел

DDInstall

DDInstall. FactDef