Partilhar via


Usando o driver de barramento multifuncional System-Supplied

Se o barramento subjacente de um dispositivo suportar um padrão de barramento multifuncional, como PC Card, o fornecedor de dispositivo multifuncional numa plataforma baseada em NT pode usar o driver de barramento multifuncional fornecido pelo sistema (mf.sys) para suportar o dispositivo.

O driver de barramento mf.sys lida com 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 lida com o gerenciamento de energia para as funções filhas, gerindo a energia do dispositivo multifuncional pai.

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

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

  • Os DEVICE_CAPABILITIES das funções filho devem ser idênticos e devem corresponder aos do dispositivo pai. Quando questionado sobre as capacidades do dispositivo de uma função de criança (IRP_MN_QUERY_CAPABILITIES), o driver mf.sys reporta as capacidades do dispositivo pai.

  • O driver para o bus no qual o dispositivo multifuncional se encontra, como pcmcia.sys, deve lidar com quaisquer pedidos IRP_MN_READ_CONFIG e IRP_MN_WRITE_CONFIG. O motorista mf.sys apenas passa esses IRPs para o motorista de ônibus pai.

  • As funções devem ser independentes: não podem ter dependências de ordem inicial; os requisitos de recursos para uma função não podem ser expressos em termos dos recursos de outra função (por exemplo, a função1 usa a porta de E/S X e a função2 usa a porta X + 200); e cada função deve poder funcionar como um dispositivo separado, mesmo que seja assistida pelo(s) mesmo(s) condutor(es) que outra função.

Para usar mf.sys, um fornecedor fornece um INF para o dispositivo multifuncional que especifica mf.sys como o driver para o dispositivo. Se um dispositivo estiver completamente e precisamente em conformidade com o padrão multifuncional para o seu barramento subjacente, o fornecedor desse dispositivo pode usar o mf.inf fornecido pelo sistema. Se um dispositivo não estiver completamente em conformidade com o padrão, o fornecedor deve 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 seguinte esqueleto de um INF multifuncional personalizado ilustra a sintaxe necessária para especificar mf.sys como o driver para 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 de dispositivo LAN/modem PC Card. Sem qualquer suporte multifuncional especial, tal dispositivo pode ser identificado pelo controlador de barramento PCMCIA como um único dispositivo de modem. Com o suporte adicional de um INF multifuncional e do driver de barramento mf.sys, ambas as funções do dispositivo são enumeradas. A figura a seguir mostra as camadas de dispositivos de exemplo que podem ser criadas para um cartão PC combinado incluindo o suporte multifuncional necessário.

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

Como mostrado na figura anterior, o driver do barramento em que reside o dispositivo multifuncional enumera um dispositivo. O 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 para o dispositivo. O driver de barramento mf.sys enumera dois dispositivos secundários, 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 condutor do autocarro mf.sys arbitra os recursos para os dispositivos filho e gere quaisquer outros aspetos multifuncionais do dispositivo. O fornecedor da placa multifuncional fornece drivers de função e INFs para as múltiplas funções (LAN e modem), como se fossem dispositivos separados.

A ilustração centra-se nos controladores de função e controladores de barramento pai e seus FDOs e PDOs associados. Todos os drivers de filtro (e DOs de filtro) são omitidos por simplicidade.