Pila de controladores IEEE 1394
En el diagrama siguiente se muestra la pila de controladores IEEE 1394 con el nuevo controlador de bus 1394 y los controladores de cliente de 1394 compatibles con Microsoft.
Un controlador de cliente para un dispositivo que se conecta al controlador de autobús IEEE 1394 se encuentra sobre la pila de controladores IEEE 1394. El controlador de autobús proporciona una interfaz independiente del hardware al bus IEEE 1394. El controlador de dispositivo se comunica con el dispositivo mediante el envío de IRP, procesados por el controlador de autobús IEEE 1394. Antes de Windows 7, el controlador de autobús era una combinación de un controlador de puerto (1394bus.sys) y un controlador de minipuerto principal para el controlador host de la placa base (ochi1394.sys). En Windows 7 y versiones posteriores, los controladores heredados del bus port/miniport se reemplazan por 1394ohci.sys, un controlador de bus IEEE 1394 monolítico que se implementa mediante el marco de controladores en modo kernel (KMDF). El controlador de autobús 1394ohci.sys es totalmente compatible con los controladores de autobús heredados de 1394. Para obtener más información sobre algunas diferencias conocidas de comportamiento entre el nuevo controlador de autobús y los controladores de autobús heredados de 1394, consulte IEEE 1394 Bus Driver in Windows 7.
En la ilustración siguiente se muestra la relación entre el heredado y los nuevos conductores de autobús de 1394.
Para emitir comandos a los dispositivos conectados al bus, los controladores emiten el IRP de IRP_MJ_DEVICE_CONTROL , con el código de control IOCTL_1394_CLASS. El controlador empaqueta los parámetros en un bloque de solicitud de E/S IEEE 1394 (IRB) y pasa un puntero a él en el miembro Parameters.Others.Argument1 del IRP. El miembro FunctionNumber del IRB determina el tipo de operación y el miembro u describe la operación. El controlador de autobús usa el IOCTL_1394_CLASS IRP para presentar una interfaz tanto al bus como al controlador host.
La estructura IRB contiene parámetros que se aplican a cada solicitud de bus y parámetros específicos de la solicitud. El miembro u del IRB contiene los parámetros específicos de la solicitud, en una unión de estructuras de datos, una por tipo de solicitud.
Durante el funcionamiento normal, los controladores reciben solicitudes de E/S normales (como IRP_MJ_READ), las convierten en la operación IEEE 1394 adecuada y envían esa operación al dispositivo a través de IOCTL_1394_CLASS.