Директива INF LogConfig
Внимание
Начиная с Windows 11 версии 22H2 пакет драйвера, использующий эту директиву, больше не подходит для подписи из Центра разработчиков оборудования.
Пакеты универсальных драйверов и драйверы Windows не могут использовать эту директиву.
Директива LogConfig ссылается на один или несколько разделов, определенных inf-writer, каждый из которых задает логическую конфигурацию аппаратных ресурсов — строки запросов прерывания, диапазоны памяти, порты ввода-вывода и каналы DMA, которые могут использоваться устройством. Каждый раздел log-config-указывает альтернативный набор ресурсов оборудования относительно шины, которые могут использоваться устройством.
[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=
Указывает значение приоритета для этой логической конфигурации, как одно из следующих:
ЖЕЛАННЫЙ
Обратимая настройка, наиболее оптимальная.
NORMAL
Обратимая настройка, менее оптимальная, чем DESIRED. Это типичный параметр.
Значение NORMAL следует указать, если раздел log-config-был определен в DDInstall. Раздел LogConfigOverride и значение типа конфигурации не может быть указано.
SUBOPTIMAL
Обратимая настройка, менее оптимальная, чем NORMAL.
HARDRECONFIG
Требуется изменение переключителя для перенастройки.
ПРОВОДНЫХ
Невозможно изменить.
ПЕРЕЗАПУСК
Требуется, чтобы перезапуск вступил в силу.
ПЕРЕЗАГРУЗИТЬ
Это то же самое, что и ПЕРЕЗАПУСК.
POWEROFF
Требуется, чтобы в силу вступают в силу цикл питания.
ОТКЛЮЧЕНО
Оборудование или устройство отключено.
DMAConfig=[DMAattrs:]DMANum[*,*DMANum]...]
DMAattrs является необязательным , если устройство подключено к шине с только 8-разрядными каналами DMA, а устройство использует стандартную систему DMA. В противном случае это может быть одно из следующих букв:
Буква | Значение |
---|---|
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]...
Задает один или несколько диапазонов портов ввода-вывода для устройства в одной из следующих форм:
start-end[([декоде-маска][:alias-offset][:attr])] (диапазон ввода-вывода типа 1)
Начало
Задает начальный адрес диапазона портов ввода-вывода в виде 64-разрядного шестнадцатеричного адреса.
end
Задает конечный адрес диапазона портов ввода-вывода, а также шестнадцатеричный адрес 64-разрядного.
декодирование маски
Определяет тип псевдонима и может быть любым из следующих типов:
Значение маски | Значение | значение IOR_Alias |
---|---|---|
3ff | 10-разрядная декодирование | 0x04 |
fff | 12-разрядная декодирование | 0x10 |
ffff | 16-разрядная декодирование | 0x00 |
0 | Положительное декодирование | 0xFF |
псевдоним смещение
Не используется.
attr
Указывает букву M , если заданный диапазон находится в системной памяти. Если опущено, указанный диапазон находится в пространстве портов ввода-вывода.
size@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)]
Начало
Задает физический адрес начального (относительно шины) диапазона памяти устройства в виде 64-разрядного шестнадцатеричного значения.
end
Указывает конечный физический адрес диапазона памяти, а также шестнадцатеричное значение 64-разрядного значения.
attr
Задает атрибуты диапазона памяти в виде одного или нескольких из следующих букв:
Буква | Значение |
---|---|
R | Только для чтения |
W | Только для записи |
RW | Чтение/запись |
C | Разрешено объединенное запись |
H | Кэшируемые |
F | Предварительная выборка |
D | Адресация декодирования карточки — 32-разрядная, а не 24-разрядная |
Если оба языка R и W указаны или не указаны, предполагается чтение и запись.
size
Указывает количество байтов, необходимых в диапазоне памяти, в виде 32-разрядного шестнадцатеричного значения.
min
Указывает самый низкий возможный начальный адрес диапазона памяти устройства в виде шестнадцатеричного значения 64-разрядного значения.
max
Указывает максимальный конечный адрес диапазона памяти в виде шестнадцатеричного шестнадцатеричного значения.
выравнивание маски
При необходимости задает 64-разрядную маску, которая используется в побитовой операции AND для выравнивания начала диапазона памяти устройства на целочисленной (обычно 64-разрядной) границе адреса.
Если опущена маска выравнивания, выравнивание памяти по умолчанию находится на границе 4K (FFFFF000).
IRQConfig=[IRQattrs:]IRQNum[,IRQNum]...
IRQattrs опущен, если устройство использует относительную шину, активировав граничную irQ. В противном случае укажите L, чтобы указать, что активируется irQ и LS уровня, если устройство может предоставить общий доступ к строкам IRQ, перечисленным в этой записи.
IRQNum указывает один или несколько относительных шины IRQs, которые устройство может использовать в качестве десятичных чисел, каждый из которых отделен от следующего запятыми (,).
PcCardConfig ConfigIndex=[:[MemoryCardBase1][:MemoryCardBase2]][(attrs)]
Настраивает регистры CardBus и (или) создает до двух окон постоянной памяти, сопоставленных с пространством атрибутов устройства. Драйвер может использовать окна памяти для доступа к пространству атрибутов из ISR. Укажите все числовые значения в шестнадцатеричном формате.
Элементы записи PcCardConfig приведены следующим образом:
ConfigIndex
Указывает 8-разрядный индекс конфигурации PCMCIA для устройства на шине PCMCIA.
MemoryCardBase1
При необходимости задает 32-разрядный базовый адрес для первого окна памяти.
MemoryCardBase2
При необходимости задает 32-разрядный базовый адрес для второго окна памяти.
attrs
При необходимости задает один или несколько атрибутов для устройства, разделенных пробелами. Недопустимый описатель атрибутов делает ошибку всей записи PcCardConfig . Если указано несколько описателя для определенного атрибута, атрибуты применяются к отдельным окнам ввода-вывода или памяти для устройства. Если указан только один описатель, этот атрибут применяется ко всем окнам (см. следующий пример).
В частности, если указаны несколько описателей, первый описатель, найденный считывание слева направо, будет применено к первому окну, а следующий описатель применяется ко второму окну. Управление двумя окнами ввода-вывода и двумя окнами памяти может управляться одной записью PcCardConfig . Если устройство имеет более двух окон памяти, необходимо включить вторую запись PcCardConfig .
К атрибутам относятся:
Атрибут | Description |
---|---|
W | 16-разрядный путь к данным ввода-вывода. Значение по умолчанию — 8-разрядная, если INF указывает директиву LogConfig . Если директива LogConfig не указана, драйвер использует 16-разрядный ввод-вывод. |
Sn | ~IOCS16 source. Если значение n равно 0, ~IOCS16 основывается на значении бита обработки данных. Если значение 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-.
attrs
Если задано значение буквы A, драйвер шины PCMCIA будет включать звук в регистрах конфигурации и состояния.
Каждая запись MfCardConfig предоставляет сведения о одной функции мультифункционного устройства. Если набор директив LogConfig ссылается на дискретный раздел log-config-section в DDInstall INF. Раздел LogConfigOverride, каждый раздел log-config-должен иметь свои записи, включая записи MfCardConfig, перечисленные в том же порядке.
Замечания
Директива LogConfig может быть указана в любом из каждого производителя, в каждом разделе INF DDInstall или INF DDInstall. Раздел LogConfigOverride.
INF-файл для устройства, отличного от PnP, который поддерживает несколько альтернативных логических конфигураций, обычно определяет набор разделов log-config-section в разделе DDInstall. Каждый раздел log-config-указывает дискретный набор ресурсов логической конфигурации. Она также включает запись ConfigPriority , которая ранжирует каждую логическую конфигурацию в соответствии с его воздействием на производительность устройства и драйвера, простоту и т. д.
Для устройств PnP диспетчер PnP назначает набор логических аппаратных ресурсов каждому устройству PnP. То есть диспетчер PnP запрашивает драйверы системной шины, получает отчеты о ресурсах конфигурации шины на устройствах и назначает наборы логических аппаратных ресурсов для достижения оптимального баланса на уровне системы при использовании всех таких ресурсов.
В результате директива LogConfig в разделе DDInstall игнорируется для устройств PnP. Чтобы переопределить ресурсы, сообщаемые шиной для устройства PnP, включите директиву LogConfig в DDInstall. Раздел LogConfigOverride. В этом случае ресурсы, указанные в разделе log-config-, используются вместо тех, о которых сообщает шина.
Расширения платформы можно добавить в раздел DDInstall, содержащий директиву LogConfig, или в DDInstall. Раздел LogConfigOverride, чтобы указать логические конфигурации для конкретной платформы или операционной системы. Дополнительные сведения см. в разделе "Создание INF-файла".
Имя раздела журнала должно быть уникальным для INF-файла, но на него можно ссылаться директивы LogConfig в других разделах INF DDInstall для одних и того же устройства. Каждое имя раздела, созданного в INF-записи, должно быть уникальным в INF-файле и должно соответствовать общим правилам определения имен разделов. Дополнительные сведения об этих правилах см. в разделе Общие правила синтаксиса для INF-файлов.
В каждом разделе log-config-config-section можно использовать только одну запись ConfigPriority. В зависимости от требований к оборудованию устройства может быть несколько записей.
Одно или несколько записей MfCardConfig= могут отображаться только в разделе log-config-section , на который ссылается директива LogConfig в DDInstall. Раздел LogConfigOverride inf для мультифункционного устройства. Дополнительные сведения о INF-файлах для многофункционных устройств см. в разделе "Поддержка многофункционных устройств".
Записи и значения раздела, на которые ссылается LogConfig
В разделе log-config-установщик создает двоичные логические записи конфигурации и сохраняет их в реестре.
INF-файл может содержать любое количество разделов журнала для каждого устройства. Однако каждый из таких разделов должен содержать полные сведения об установке одного устройства. Как правило, INF-файл должен указывать записи в каждом из его разделов log-config-в одном порядке. INF-файл должен указать каждый набор записей в порядке, который лучше всего подходит для инициализации драйвера устройства.
Если для данного устройства присутствует несколько разделов log-config-section , во время установки используется только один из этих разделов INF. Такой INF-файл частично управляет тем, что такой раздел используется со значением ConfigPriority , которое он предоставляет в каждом из таких разделов log-config.. То есть системные установщики пытаются соблюдать все приоритеты конфигурации в INF-файле, но могут выбрать более низкую логическую конфигурацию, если обнаружен конфликт с уже установленным устройством.
Во время установки выбирается один и только один ресурс из каждой записи в заданном разделе log-config-section и назначается конкретному устройству. Если для конкретного устройства требуется несколько ресурсов одного типа, необходимо использовать набор записей этого типа в разделах log-config-section.
Например, чтобы обеспечить два диапазона портов ввода-вывода для определенного устройства, необходимо указать две записи IOConfig= в разделе log-config-config для этого устройства. С другой стороны, если устройству не требуется 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 КБ, которая может начинаться с C0000 или D0000.
MemConfig=C0000-C7FFF, D0000-D7FFF
В этом примере указывается область памяти размером 32 кб, начиная с границ 64K.
MemConfig=8000@C0000-D7FFF%F0000
В этом примере показано, как INF-файл класса HDC системы настраивает несколько разделов log-config-sections для универсальных контроллеров жесткого диска 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 см. в разделе "Поддержка карточек с неполными адресами регистрации конфигурации".