Pilas de controladores

La mayoría de las solicitudes que se envían a los controladores de dispositivos 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 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 de dispositivo para el dispositivo y, a continuación, envía un IRP a la pila de dispositivos de ese nodo. A veces, más de una pila de dispositivos está 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 por capas de 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.

diagrama de cuatro nodos de dispositivo, cada uno con una pila de dispositivos.

Aquí se muestra cómo se procesa el IRP en cada fase numerada del diagrama:

  1. El 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.

  2. 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.

  3. 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.

  4. Cuando Usbhub.sys ha terminado de procesar el IRP, pasa el IRP al par (Usbuhci.sys, Usbport.sys).

    Usbuhci.sys es un controlador de minipuerto 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 minipuerto 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 de 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.

diagrama de una pila de controladores, en el que se muestra el controlador superior asociado a un fdo únicamente, y los otros tres controladores asociados a un pdo y un fdo.

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 del dispositivo.

Pilas de controladores de tecnología

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).

diagrama de una pila de controladores en la que se muestran nombres descriptivos para los controladores: controlador de clase de disco en la parte superior seguido del controlador de puerto de almacenamiento usb y, a continuación, controlador de concentrador usb y controlador (miniport usb 2, puerto usb).

En el diagrama, la pila de controladores se divide en tres secciones. Podemos considerar cada sección como perteneciente a una tecnología determinada o a un componente o parte concretos del sistema operativo. Por ejemplo, podemos 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 que podría tener todo el diagrama de bloques del núcleo USB.

diagrama que muestra la pila de controladores de tecnología para un posible bloque de núcleo usb.

Un 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 1394 y la pila de controladores de audio.

Nota En el diagrama de bloques de núcleo USB de este tema 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.

Nodos de dispositivo y pilas de dispositivos

Minidrivers y pares de controladores

Conceptos para todos los desarrolladores de controladores