Поддержка PC-карт с неполными регистрами конфигурации
Если 16-разрядное устройство с картой ПК не имеет регистров конфигурации для каждой функции, поставщик такого устройства может использовать драйвер многофункционной шины (mf.sys), но должен предоставить пользовательский INF-файл и поддержку отдельных функций.
Поставщик такого устройства на платформе на основе NT может использовать следующий системный компонент:
Функциональный драйвер для многофункционального устройства. (поставляется системой)
Пользовательский INF-файл для устройства должен указывать mf.sys в качестве функционального драйвера для устройства. Затем системный драйвер mf.sys перечислит функции устройства.
Дополнительные сведения об использовании системного драйвера mf.sys см. в с помощью System-Supplied многофункциональным драйвером шины.
Поставщик такого устройства должен указать следующее:
Пользовательский INF-файл для мультифункционного устройства. (предоставленный поставщиком)
Поставщик должен предоставить многофункционный INF-файл, указывающий mf.sys в качестве драйвера многофункционной шины, указывает класс MultiFunction (с соответствующим GUID, определенным в devguid.h), и предоставляет отсутствующие сведения о регистре конфигурации. Дополнительные сведения см. далее в этом разделе.
Драйвер функции PnP для каждой функции устройства. (предоставленный поставщиком)
Так как драйвер многофункционной шины обрабатывает многофункционную семантику, драйверы функций могут быть теми же драйверами, которые используются при упаковке функций в качестве отдельных устройств.
INF-файл для каждой функции устройства. (предоставленный поставщиком)
INF-файлы могут быть теми же файлами, которые используются при упаковке функций в виде отдельных устройств. В INF-файлах не требуется специальная многофункционная семантика.
Предоставленный поставщиком пользовательский INF-код для такого устройства должен указать:
mf.sys в качестве сервиса для устройства.
Дополнительные сведения см. в статье Использование драйвера многофункционной шины System-Supplied.
Требования к ресурсам мультифункционного устройства.
Укажите требования к ресурсам в разделах INF DDInstall.LogConfigOverride .
Идентификатор оборудования для каждой функции устройства.
Укажите идентификаторы оборудования в разделе INF DDInstall.HW.
Карта ресурсов для каждой функции устройства, указывающая родительские ресурсы, требуемые для каждой дочерней функции.
Укажите карты ресурсов в INF разделе DDInstallHW. См. раздел "Создание карт ресурсов для многофункционального устройства" для получения дополнительной информации о создании карт ресурсов.
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, подобно показанному выше, копирует ID (идентификатор) и сведения о ресурсе дочерних функций в реестр. Драйвер mf.sys извлекает сведения из реестра при перечислении дочерних функций устройства.