Compartilhar via


Usando o System-Supplied Driver de Barramento Multifuncional

Se o barramento subjacente de um dispositivo der suporte a um padrão de barramento multifuncional, como cartão de computador, o fornecedor de um dispositivo multifuncional em uma plataforma baseada em NT poderá usar o driver de barramento multifuncional fornecido pelo sistema (mf.sys) para dar suporte ao dispositivo.

O driver de barramento mf.sys manipula a enumeração PnP das funções do dispositivo e arbitra recursos, como portas de E/S e IRQs, entre as funções. O driver mf.sys manipula o gerenciamento de energia para as funções filho gerenciando o dispositivo de multifunção pai.

Para usar mf.sys, um dispositivo multifuncional deve atender aos seguintes requisitos:

  • O barramento subjacente do dispositivo deve ter um padrão multifuncional.

  • O DEVICE_CAPABILITIES das funções filho deve ser idêntico e deve corresponder aos do dispositivo pai. Quando consultado sobre os recursos de dispositivo de uma função filho (IRP_MN_QUERY_CAPABILITIES), o driver mf.sys relata os recursos do dispositivo do dispositivo pai.

  • O driver do barramento no qual o dispositivo multifuncional reside, como pcmcia.sys, deve lidar com qualquer solicitação de IRP_MN_READ_CONFIG e IRP_MN_WRITE_CONFIG . O mf.sys motorista passa esses IRPs para o motorista do ônibus pai.

  • As funções devem ser independentes: elas não podem ter dependências de ordem inicial; os requisitos de recurso para uma função não podem ser expressos em termos dos recursos de outra função (por exemplo, function1 usa a porta X de E/S e function2 usa portX + 200); e cada função deve ser capaz de operar como um dispositivo separado, mesmo que seja atendido pelos mesmos drivers que outra função.

Para usar mf.sys, um fornecedor fornece um INF para o dispositivo multifuncional que especifica mf.sys como o driver do dispositivo. Se um dispositivo estiver completamente em conformidade com o padrão multifuncional para seu barramento subjacente, o fornecedor desse dispositivo poderá usar o mf.inf fornecido pelo sistema. Se um dispositivo não estiver completamente em conformidade com o padrão, o fornecedor deverá fornecer um INF personalizado.

Em ambos os casos, o fornecedor também fornece drivers e arquivos INF para as funções individuais no dispositivo.

O esqueleto a seguir de um INF multifuncional personalizado ilustra a sintaxe necessária para especificar mf.sys como o driver de um dispositivo multifuncional:

[Version]
; ...
Class = Multifunction   ; the system-defined class for MF devices
ClassGUID  = {4d36e971-e325-11ce-bfc1-08002be10318} ; GUID for MF
; ...
; ...
[ControlFlags]
ExcludeFromSelect = *   ; don't include PnP devices in a displayed list of
                        ; devices available for manual installation
[Manufacturer]
; ...
; ...
[ModelsSection.NTamd64]         ; models section
; ...
; ...
[DDInstall.NT]          ; install section
Include = mf.inf        ; specify that this device requires mf.sys
Needs = MFINSTALL.mf
; ...

[DDinstall.NT.Services]
Include = mf.inf
Needs = MFINSTALL.mf.Services

[DDInstall.NT.HW]
AddReg=DDInstall.RegHW

[DDInstall.RegHW]
; put entries with child function hardware IDs here
; ...

; put override sections here...
; ...

[Strings]
; ...

Considere uma combinação lan/modem dispositivo pc card. Sem qualquer suporte especial para várias funções, esse dispositivo pode ser relatado pelo motorista do barramento PCMCIA como um único dispositivo modem. Com o suporte adicional de um INF multifuncional e o driver de barramento mf.sys, ambas as funções do dispositivo são enumeradas. A figura a seguir mostra as pilhas de dispositivo de exemplo que podem ser criadas para esse cartão de computador de combinação com o suporte multifuncional necessário.

diagrama ilustrando pilhas de dispositivos para um dispositivo multifuncional enumerado por mf.sys.

Conforme mostrado na figura anterior, o driver do barramento no qual o dispositivo multifuncional reside enumera um dispositivo. A ID de hardware no arquivo INF multifuncional faz com que o gerenciador PnP carregue o driver de barramento mf.sys como o driver de função do dispositivo. O driver de barramento mf.sys enumera dois dispositivos filho, um dispositivo LAN e um modem.

O gerenciador PnP trata cada dispositivo filho como um dispositivo típico, localizando arquivos INF, carregando os drivers apropriados, chamando suas rotinas AddDevice e assim por diante até que uma pilha de dispositivos seja criada para cada dispositivo. O mf.sys driver de barramento arbitra os recursos para os dispositivos filho e gerencia quaisquer outros aspectos multifuncionais do dispositivo. O fornecedor do cartão multifuncional fornece drivers de função e INFs para as várias funções (LAN e modem), assim como se fossem dispositivos separados.

A ilustração se concentra nos drivers de função e nos motoristas de ônibus pai e em seus FDOs e PDOs associados. Todos os drivers de filtro (e DOs de filtro) são omitidos para simplificar.