Поделиться через


Директива 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 см. в разделе "Поддержка карточек с неполными адресами регистрации конфигурации".

См. также

DDInstall

DDInstall. FactDef