Partilhar via


Suporte a placas de PC que têm registradores de configuração incompletos

Se um dispositivo PC Card multifuncional de 16 bits não tiver registradores de configuração para cada função, o fornecedor de tal dispositivo poderá usar o driver de barramento multifuncional (mf.sys) fornecido pelo sistema, mas deverá fornecer um arquivo INF personalizado e suporte para as funções individuais.

O fornecedor de tal dispositivo em uma plataforma baseada em NT pode usar o seguinte componente fornecido pelo sistema:

  • Um driver de função para o dispositivo multifuncional. (fornecido pelo sistema)

    Um INF personalizado para o dispositivo deve especificar mf.sys como o driver de função para o dispositivo. O driver de mf.sys fornecido pelo sistema enumerará as funções do dispositivo.

    Consulte Usando o driver de barramento multifuncional fornecido pelo sistema para obter mais informações sobre como usar o driver de mf.sys fornecido pelo sistema.

O fornecedor de tal dispositivo deve fornecer o seguinte:

  • Um arquivo INF personalizado para o dispositivo multifuncional. (fornecido pelo fornecedor)

    O fornecedor deve fornecer um arquivo INF multifuncional que especifique mf.sys como o driver de barramento multifuncional, especifique a classe "MultiFunction" (com seu GUID associado, conforme definido em devguid.h) e forneça as informações de registro de configuração ausentes. Veja mais informações mais adiante nesta seção.

  • Um driver de função PnP para cada função do dispositivo. (fornecido pelo fornecedor)

    Como o driver de barramento multifuncional lida com a semântica multifuncional, os drivers de função podem ser os mesmos drivers que são usados quando as funções são empacotadas como dispositivos individuais.

  • Um arquivo INF para cada função do dispositivo. (fornecido pelo fornecedor)

    Os arquivos INF podem ser os mesmos arquivos que são usados quando as funções são empacotadas como dispositivos individuais. Os arquivos INF não precisam de nenhuma semântica multifuncional especial.

O INF personalizado fornecido pelo fornecedor para esse dispositivo deve especificar:

  • mf.sys como o serviço para o dispositivo.

    Consulte Usando o driver de barramento multifuncional fornecido pelo sistema para obter mais informações.

  • Os requisitos de recursos do dispositivo multifuncional.

    Especifique os requisitos de recursos nas seções INF DDInstall.LogConfigOverride.

  • O ID de hardware para cada função do dispositivo.

    Especifique as IDs de hardware em uma seção INF DDInstall.HW.

  • Um mapa de recursos para cada função do dispositivo, identificando os recursos pai exigidos por cada função filha.

    Especifique os mapas de recursos em um DDInstall INF.Seção HW. Consulte Criando mapas de recursos para um dispositivo multifuncional para obter mais informações sobre como criar mapas de recursos.

O INF deve reafirmar todos os requisitos de recurso especificados pelo dispositivo porque se as configurações de substituição estiverem presentes no INF, o gerenciador PnP não usará nenhum requisito de recurso de dispositivo do dispositivo.

Para tal dispositivo, o registro de opção de configuração pode ser programado usando uma entrada PcCardConfig , semelhante à programação de um dispositivo de função única. A entrada PcCardConfig contém informações que se aplicam a todo o dispositivo. A entrada PcCardConfig está documentada na Diretiva INF LogConfig.

Ao especificar uma entrada PcCardConfig para um dispositivo multifuncional, o formato do ConfigIndex é o mesmo definido para um dispositivo de função única. O registro de configuração para PC Cards de função única contém um índice para um conjunto de recursos definidos nos atributos desse dispositivo. Esta diretiva também pode ser usada com determinados dispositivos multifuncionais que usam o formato baseado em índice do registro de opção de configuração.

O exemplo a seguir mostra um arquivo INF para instalar um dispositivo multifuncional que usa mf.sys como seu driver de barramento e tem registradores de configuração 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"

Um INF como o mostrado acima copia as informações de ID e recurso para as funções filho para o registro. O driver mf.sys recupera as informações do registro quando enumera as funções filho do dispositivo.