Uso del controlador multifunción de bus System-Supplied
Si el bus subyacente de un dispositivo admite un estándar de bus multifunción, como la tarjeta PC, el proveedor de un dispositivo multifunción en una plataforma basada en NT puede usar el controlador de bus multifunción suministrado por el sistema (mf.sys) para admitir el dispositivo.
El controlador de bus de mf.sys controla la enumeración PnP de las funciones del dispositivo y arbitra los recursos, como puertos de E/S e IRQ, entre las funciones. El controlador mf.sys controla la administración de energía para las funciones secundarias mediante la administración del dispositivo multifunción primario.
Para usar mf.sys, un dispositivo multifunción debe cumplir los siguientes requisitos:
El bus subyacente del dispositivo debe tener un estándar multifunción.
La DEVICE_CAPABILITIES de las funciones secundarias debe ser idéntica y debe coincidir con las del dispositivo primario. Cuando se consultan las funcionalidades del dispositivo de una función secundaria (IRP_MN_QUERY_CAPABILITIES), el controlador de mf.sys informa de las funcionalidades del dispositivo primario.
El controlador del bus en el que reside el dispositivo multifunción, como pcmcia.sys, debe controlar las solicitudes de IRP_MN_READ_CONFIG y IRP_MN_WRITE_CONFIG . El controlador mf.sys simplemente pasa estos IRP al controlador principal del bus.
Las funciones deben ser independientes: no pueden tener dependencias de orden de inicio; los requisitos de recursos de una función no se pueden expresar en términos de los recursos de otra función (por ejemplo, function1 usa el puerto de E/S X y la función2 usa portX + 200); y cada función debe ser capaz de funcionar como un dispositivo independiente, incluso si es ofrecido por los mismos controladores que otra función.
Para usar mf.sys, un proveedor proporciona un INF para el dispositivo multifunción que especifica mf.sys como controlador para el dispositivo. Si un dispositivo se ajusta completamente y con precisión al estándar multifunción para su bus subyacente, el proveedor de este tipo de dispositivo puede usar el mf.inf suministrado por el sistema. Si un dispositivo no se ajusta completamente al estándar, el proveedor debe proporcionar un INF personalizado.
En cualquier caso, el proveedor también proporciona controladores y archivos INF para las funciones individuales del dispositivo.
El siguiente esqueleto de un INF multifunción personalizado ilustra la sintaxis necesaria para especificar mf.sys como controlador para un dispositivo multifunción:
[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 la posibilidad de una combinación de dispositivo DE TARJETA DE EQUIPO LAN/módem. Sin ninguna compatibilidad multifunción especial, el controlador de bus PCMCIA puede informar de este tipo de dispositivo como un único dispositivo módem. Con la compatibilidad adicional de un INF multifunción y el controlador de bus mf.sys, se enumeran ambas funciones del dispositivo. En la ilustración siguiente se muestran las pilas de dispositivos de ejemplo que podrían crearse para este tipo de tarjeta de PC combinada con la compatibilidad multifunción necesaria.
Como se muestra en la ilustración anterior, el controlador del bus en el que reside el dispositivo multifunción enumera un dispositivo. El identificador de hardware del archivo INF multifunción hace que el administrador de PnP cargue el controlador de bus mf.sys como controlador de función para el dispositivo. El controlador de bus mf.sys enumera dos dispositivos secundarios, un dispositivo LAN y un módem.
El administrador de PnP trata a cada dispositivo secundario como un dispositivo típico, localiza archivos INF, carga los controladores adecuados, llama a sus rutinas AddDevice, etc. hasta que se crea una pila de dispositivos para cada dispositivo. El controlador de autobús mf.sys arbitra los recursos de los dispositivos secundarios y administra cualquier otro aspecto multifunción del dispositivo. El proveedor de la tarjeta multifunción proporciona controladores de función e INF para las múltiples funciones (LAN y módem), igual que si fueran dispositivos independientes.
La ilustración se centra en los controladores de función y los controladores de autobús primarios y sus DPO y PDO asociados. Los controladores de filtro (y los DO de filtro) se omiten por motivos de simplicidad.