Pilas de controladores
La mayoría de las solicitudes que se envían a los controladores de dispositivo se empaquetan en paquetes de solicitud de E/S (IRP). Cada dispositivo se representa mediante un nodo de dispositivo y cada nodo de dispositivo tiene una pila de dispositivos. Para obtener más información, consulte Nodos de dispositivo y pilas de dispositivos. Para enviar una solicitud de lectura, escritura o control a un dispositivo, el administrador de E/S busca el nodo del dispositivo y, a continuación, envía un IRP a la pila de dispositivos de ese nodo. A veces, hay más de una pila de dispositivos implicada en el procesamiento de una solicitud de E/S. Independientemente del número de pilas de dispositivos implicadas, la secuencia general de controladores que participan en una solicitud de E/S se denomina pila de controladores para la solicitud. También usamos el término pila de controladores para hacer referencia al conjunto de controladores en capas para una tecnología determinada.
Solicitudes de E/S procesadas por varias pilas de dispositivos
En algunos casos, hay más de una pila de dispositivos implicada en el procesamiento de un IRP. En el diagrama siguiente se muestra un caso en el que cuatro pilas de dispositivos intervienen en el procesamiento de un único IRP.
Aquí se muestra cómo se procesa el IRP en cada fase numerada del diagrama:
IrP se crea mediante Disk.sys, que es el controlador de función de la pila de dispositivos para el nodo Mi dispositivo de almacenamiento USB. Disk.sys pasa el IRP de la pila de dispositivos a Usbstor.sys.
Observe que Usbstor.sys es el controlador PDO para el nodo Mi dispositivo de almacenamiento USB y el controlador FDO para el nodo Dispositivo de almacenamiento masivo USB. En este punto, no es importante decidir si el IRP es propiedad del par (PDO, Usbstor.sys) o del par (FDO, Usbstor.sys). IrP es propiedad del controlador, Usbstor.sys y el controlador tiene acceso tanto al PDO como al FDO.
Cuando Usbstor.sys ha terminado de procesar el IRP, pasa el IRP a Usbhub.sys. Usbhub.sys es el controlador PDO para el nodo dispositivo de almacenamiento masivo USB y el controlador FDO para el nodo del concentrador raíz USB. No es importante decidir si el IRP es propiedad del par (PDO, Usbhub.sys) o del par (FDO, Usbhub.sys). IrP es propiedad del controlador, Usbhub.sys y el controlador tiene acceso tanto al PDO como al FDO.
Cuando Usbhub.sys ha terminado de procesar el IRP, pasa el IRP al par (Usbuhci.sys, Usbport.sys).
Usbuhci.sys es un controlador de miniporte y Usbport.sys es un controlador de puerto. El par (minipuerto, puerto) desempeña el papel de un solo controlador. En este caso, Microsoft escribe tanto el controlador de miniport como el controlador de puerto. El par (Usbuhci.sys, Usbport.sys) es el controlador PDO para el nodo del concentrador raíz USB y el par (Usbuhci.sys, Usbport.sys) también es el controlador FDO para el nodo controlador de host USB. El par (Usbuhci.sys, Usbport.sys) realiza la comunicación real con el hardware del controlador host, que a su vez se comunica con el dispositivo de almacenamiento USB físico.
Pila de controladores para una solicitud de E/S
Considere la secuencia de cuatro controladores que participaron en la solicitud de E/S que se muestra en el diagrama anterior. Podemos obtener otra vista de la secuencia centrándonos en los controladores en lugar de en los nodos de dispositivo y en sus pilas de dispositivos individuales. En el diagrama siguiente se muestran los controladores en secuencia de arriba a abajo. Observe que Disk.sys está asociado a un objeto de dispositivo, pero cada uno de los otros tres controladores está asociado a dos objetos de dispositivo.
La secuencia de controladores que participan en una solicitud de E/S se denomina pila de controladores para la solicitud de E/S. Para ilustrar una pila de controladores para una solicitud de E/S, dibujamos los controladores de arriba a abajo en el orden en que participan en la solicitud.
Observe que la pila de controladores de una solicitud de E/S es bastante diferente de la pila de dispositivos para un nodo de dispositivo. Observe también que la pila de controladores de una solicitud de E/S no permanece necesariamente en una rama del árbol de dispositivos.
Pilas de controladores tecnológicos
Considere la pila de controladores para la solicitud de E/S que se muestra en el diagrama anterior. Si asignamos un nombre descriptivo a cada uno de los controladores y realizamos algunos pequeños cambios en el diagrama, tenemos un diagrama de bloques similar a muchos de los que aparecen en la documentación del Kit de controladores de Windows (WDK).
En el diagrama, la pila del controlador se divide en tres secciones. Podemos pensar en cada sección como perteneciente a una tecnología determinada o a un componente o parte concretos del sistema operativo. Por ejemplo, podríamos decir que la primera sección de la parte superior de la pila de controladores pertenece al Administrador de volúmenes, la segunda sección pertenece al componente de almacenamiento del sistema operativo y la tercera sección pertenece a la parte USB principal del sistema operativo.
Tenga en cuenta los controladores de la tercera sección. Estos controladores son un subconjunto de un conjunto mayor de controladores USB principales que Microsoft proporciona para controlar varios tipos de solicitudes USB y hardware USB. En el diagrama siguiente se muestra el aspecto del diagrama completo de bloques de núcleos USB.
Diagrama de bloques que muestra todos los controladores de una tecnología determinada o un componente o parte concretos del sistema operativo se denomina pila de controladores de tecnología. Normalmente, a las pilas de controladores de tecnología se les asignan nombres como la pila de controladores USB Core, la pila de almacenamiento, la pila de controladores de 1394 y la pila de controladores de audio.
Nota: En el diagrama de bloques de núcleo USB de este artículo se muestra una de varias maneras posibles de ilustrar las pilas de controladores de tecnología para USB 1.0 y 2.0. Para ver los diagramas oficiales de las pilas de controladores USB 1.0, 2.0 y 3.0, consulte Arquitectura de pila de controladores USB.
Artículos relacionados
Nodos de dispositivo y pilas de dispositivos