Compartir a través de


Compatibilidad con tarjetas de PC que tienen registros de configuración incompletos

Si un dispositivo pc card multifunción de 16 bits no tiene registros de configuración para cada función, el proveedor de este tipo de dispositivo puede usar el controlador de bus multifunción suministrado por el sistema (mf.sys), pero debe proporcionar un archivo INF personalizado y soporte para las funciones individuales.

El proveedor de este tipo de dispositivo en una plataforma basada en NT puede usar el siguiente componente proporcionado por el sistema:

  • Controlador de función para el dispositivo multifunción. (suministrado por el sistema)

    Un INF personalizado para el dispositivo debe especificar mf.sys como controlador de funciones para el dispositivo. A continuación, el controlador mf.sys proporcionado por el sistema enumerará las funciones del dispositivo.

    Consulte Uso del controlador multifunción suministrado por el sistema para obtener más información sobre el uso del controlador mf.sys suministrado por el sistema.

El proveedor de este tipo de dispositivo debe proporcionar lo siguiente:

  • Un archivo INF personalizado para el dispositivo multifunción. (suministrado por el proveedor)

    El proveedor debe proporcionar un archivo INF multifunción que especifique mf.sys como controlador de bus multifunción, especifica la clase "MultiFunction" (con su GUID asociado tal como se define en devguid.h) y proporciona la información de registro de configuración que falta. Vea más información más adelante en esta sección.

  • Un controlador de función PnP para cada función del dispositivo. (suministrado por el proveedor)

    Dado que el controlador de bus multifunción controla la semántica multifunción, los controladores de función pueden ser los mismos controladores que se usan cuando las funciones se empaquetan como dispositivos individuales.

  • Un archivo INF para cada función del dispositivo. (suministrado por el proveedor)

    Los archivos INF pueden ser los mismos archivos que se usan cuando las funciones se empaquetan como dispositivos individuales. Los archivos INF no necesitan semántica multifunción especial.

El INF personalizado proporcionado por el proveedor para este dispositivo debe especificar lo siguiente:

  • mf.sys como servicio para el dispositivo.

    Consulte Uso del controlador multifunción de bus multifunción suministrado por el sistema para obtener más información.

  • Requisitos de recursos del dispositivo multifunción.

    Especifique los requisitos de recursos en las secciones INF DDInstall.LogConfigOverride.

  • Identificador de hardware para cada función del dispositivo.

    Especifique los identificadores de hardware en una sección INF DDInstall.HW.

  • Mapa de recursos para cada función del dispositivo, que identifica los recursos primarios necesarios para cada función secundaria.

    Especifique los mapas de recursos en un DDInstall inf.Sección HW. Consulte Creación de Mapas de recursos para un dispositivo multifunción para obtener más información sobre cómo crear mapas de recursos.

El INF debe restar todos los requisitos de recursos especificados por el dispositivo porque si las configuraciones de invalidación están presentes en el INF, el administrador de PnP no usa ningún requisito de recursos de dispositivo del dispositivo.

Para este tipo de dispositivo, el registro de opciones de configuración se puede programar mediante una entrada PcCardConfig , similar a programar un dispositivo de una sola función. La entrada PcCardConfig contiene información que se aplica a todo el dispositivo. La entrada PcCardConfig se documenta en la directiva LogConfig de INF.

Al especificar una entrada PcCardConfig para un dispositivo multifunción, el formato de ConfigIndex es el mismo que el definido para un dispositivo de función única. El registro de configuración de tarjetas pc de función única contiene un índice en un conjunto de recursos definidos en los atributos de ese dispositivo. Esta directiva también se puede usar con determinados dispositivos multifunción que usan el formato basado en índice del registro de la opción de configuración.

En el ejemplo siguiente se muestra un archivo INF para instalar un dispositivo multifunción que usa mf.sys como controlador de bus y tiene registros de configuración incompletos.

; 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"

Un INF como el que se muestra anteriormente copia el identificador y la información de recursos de las funciones secundarias en el Registro. El controlador mf.sys recupera la información del Registro cuando enumera las funciones secundarias del dispositivo.