Поддержка карточек с неполными регистрами конфигурации
Если 16-разрядное устройство карты ПК не имеет регистров конфигурации для каждой функции, поставщик такого устройства может использовать системный драйвер многофункционной шины (mf.sys), но должен предоставить пользовательский INF-файл и поддержку отдельных функций.
Поставщик такого устройства на платформе на основе NT может использовать следующий системный компонент:
Драйвер функции для мультифункционного устройства. (поставляется системой)
Пользовательский INF-файл для устройства должен указывать mf.sys в качестве драйвера функции для устройства. Затем драйвер, предоставленный системой, mf.sys перечисляет функции устройства.
Дополнительные сведения об использовании системного драйвера многофункционной шины см. в статье об использовании системного драйвера mf.sys.
Поставщик такого устройства должен указать следующее:
Пользовательский INF-файл для мультифункционного устройства. (предоставленный поставщиком)
Поставщик должен предоставить многофункционный INF-файл, указывающий mf.sys в качестве драйвера многофункционной шины, указывает класс MultiFunction (с соответствующим GUID, определенным в devguid.h), и предоставляет отсутствующие сведения о регистре конфигурации. Дополнительные сведения см. далее в этом разделе.
Драйвер функции PnP для каждой функции устройства. (предоставленный поставщиком)
Так как драйвер многофункционной шины обрабатывает многофункционную семантику, драйверы функций могут быть теми же драйверами, которые используются при упаковке функций в качестве отдельных устройств.
INF-файл для каждой функции устройства. (предоставленный поставщиком)
INF-файлы могут быть теми же файлами, которые используются при упаковке функций в виде отдельных устройств. В INF-файлах не требуется специальная многофункционная семантика.
Предоставленный поставщиком пользовательский INF-код для такого устройства должен указать:
mf.sys в качестве службы для устройства.
Дополнительные сведения см. в статье об использовании драйвера многофункционной шины с поддержкой системы.
Требования к ресурсам мультифункционного устройства.
Укажите требования к ресурсам в разделах INF DDInstall.LogConfigOverride.
Идентификатор оборудования для каждой функции устройства.
Укажите идентификаторы оборудования в разделе INF DDInstall.HW.
Карта ресурсов для каждой функции устройства, определяющая родительские ресурсы, необходимые каждой дочерней функции.
Укажите карты ресурсов в INF DDInstall.Раздел HW . Дополнительные сведения о создании карт ресурсов см. в статье "Создание ресурсов Карты для многофункциональным устройством".
INF-файл должен переопределить все требования к ресурсам, заданные устройством, так как если конфигурации переопределения присутствуют в INF, диспетчер PnP не использует требования к ресурсам устройства с устройства.
Для такого устройства регистрация параметра конфигурации может быть запрограммирована с помощью записи PcCardConfig , аналогично программированию устройства с одной функцией. Запись PcCardConfig содержит сведения, которые применяются ко всему устройству. Запись PcCardConfig задокументирована в директиве INF LogConfig.
При указании записи PcCardConfig для многофункционного устройства формат ConfigIndex совпадает с форматом, определенным для однофункционного устройства. Регистр конфигурации для карточек с одной функцией содержит индекс для набора ресурсов, определенных в атрибутах этого устройства. Эта директива также может использоваться с определенными многофункциональными устройствами, используюющими формат на основе индекса регистра параметра конфигурации.
В следующем примере показан INF-файл для установки многофункционного устройства, использующего mf.sys в качестве драйвера шины и имеющий неполные регистры конфигурации.
; MFSupra.inf
; This file installs the Supra Dual 56K modem
; Copyright 1999 Microsoft Corporation
[version]
Signature = "$Windows NT$"
Provider = %MSFT%
Class = MultiFunction ; system-defined class
ClassGUID = {4d36e971-e325-11ce-bfc1-08002be10318}
DriverVer = 05/08/2023,1.0.0.0
CatalogFile = ExampleCat.cat
PnpLockdown = 1
[ControlFlags]
ExcludeFromSelect=*SUP2440 ; don't include PnP devices in lists of
; devices to be manually installed
[Manufacturer]
%M_Supra% = Supra,NTamd64
[Supra.NTamd64]
%Supra1% = Sup2231GoCard.mf, *SUP2440
[Sup2231GoCard.mf.NT]
Include = mf.inf ; specify that this device needs mf.sys
Needs = MFINSTALL.mf
[Sup2231GoCard.mf.NT.HW]
AddReg=Sup2231.mf.RegHW
[Sup2231.mf.RegHW]
HKR, Child0000, HardwareID, , MF\Shotgun_DEV0 ;modem1
HKR, Child0000, ResourceMap,1,00,02
HKR, Child0001, HardwareID, , MF\Shotgun_DEV1 ;modem2
HKR, Child0001, ResourceMap,1,01,02
[Sup2231GoCard.mf.NT.Services]
Include = mf.inf
Needs = MFINSTALL.mf.Services
[Sup2231GoCard.mf.NT.LogConfigOverride]
LogConfig = Sup223x.mf.Override0, Sup223x.mf.Override1, \
Sup223x.mf.Override2, Sup223x.mf.Override3
[Sup223x.mf.Override0]
ConfigPriority = NORMAL
IOConfig = 2F8-2FF ; Com2
IOConfig = 20@100-FFFF%FFE0 ; NIC I/O
IRQConfig = 3,4,5,7,9,10,11,12,15 ; IRQ
MemConfig = 1000@0-FFFFFFFF%FFFFF000 ; Memory Descriptor
PCCardConfig = 59(W) ; ConfigIndex
[Sup223x.mf.Override1]
ConfigPriority = NORMAL
IOConfig = 3E8-3EF ; Com3
IOConfig = 20@100-FFFF%FFE0 ; NIC I/O
IRQConfig = 3,4,5,7,9,10,11,12,15 ; IRQ
MemConfig = 1000@0-FFFFFFFF%FFFFF000 ; Memory Descriptor
PCCardConfig = 69(W) ; ConfigIndex
[Sup223x.mf.Override2]
ConfigPriority = NORMAL
IOConfig = 2E8-2EF ; Com4
IOConfig = 20@100-FFFF%FFE0 ; NIC I/O
IRQConfig = 3,4,5,7,9,10,11,12,15 ; IRQ
MemConfig = 1000@0-FFFFFFFF%FFFFF000 ; Memory Descriptor
PCCardConfig = 79(W) ; ConfigIndex
[Sup223x.mf.Override3]
ConfigPriority = NORMAL
IOConfig = 3F8-3FF ; Com1
IOConfig = 20@100-FFFF%FFE0 ; NIC I/O
IRQConfig = 3,4,5,7,9,10,11,12,15 ; IRQ
MemConfig = 1000@0-FFFFFFFF%FFFFF000 ; Memory Descriptor
PCCardConfig = 49(W) ; ConfigIndex
[Strings]
MSFT = "Microsoft"
M_Supra = "Supra"
Supra1 = "Supra Dual 56K modem"
Inf, как показано выше, копирует идентификатор и сведения о ресурсе дочерних функций в реестр. Драйвер mf.sys извлекает сведения из реестра при перечислении дочерних функций устройства.