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


Поддержка карточек с неполными регистрами конфигурации

Если 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 извлекает сведения из реестра при перечислении дочерних функций устройства.