Introducción a los objetos de dispositivo
El sistema operativo representa los dispositivos por objetos de dispositivo. Uno o varios objetos de dispositivo están asociados a cada dispositivo. Los objetos de dispositivo sirven como destino de todas las operaciones del dispositivo.
Los controladores en modo kernel deben crear al menos un objeto de dispositivo para cada dispositivo, con las siguientes excepciones:
Los minidrivers que tienen una clase o controlador de puerto asociado no tienen que crear sus propios objetos de dispositivo. La clase o el controlador de puerto crea los objetos de dispositivo y envía las operaciones al minidriver.
Los controladores que forman parte de subsistemas específicos del tipo de dispositivo, como los controladores de miniporte NDIS, tienen sus objetos de dispositivo creados por el subsistema.
Consulte la documentación del tipo de dispositivo determinado para determinar si el controlador crea sus propios objetos de dispositivo.
Algunos objetos de dispositivo no representan dispositivos físicos. Un controlador de solo software, que controla las solicitudes de E/S, pero no pasa esas solicitudes al hardware, debe crear un objeto de dispositivo para representar el destino de sus operaciones.
Para obtener más información sobre cómo el controlador puede crear objetos de dispositivo, consulte Creación de un objeto de dispositivo.
Normalmente, los dispositivos se representan mediante varios objetos de dispositivo, uno para cada controlador de la pila de controladores que controla las solicitudes de E/S para el dispositivo. Los objetos de dispositivo de un dispositivo se organizan en una pila de dispositivos. Cada vez que se realiza una operación en un dispositivo, el sistema pasa una estructura de datos IRP al controlador para el objeto de dispositivo superior de la pila de dispositivos. Cada controlador controla el IRP o lo pasa al controlador asociado al objeto de dispositivo siguiente inferior de la pila de dispositivos. Para obtener más información sobre las pilas de dispositivos, vea Ejemplo de pila de dispositivos WDM. Para obtener más información sobre los IRP, consulte Control de IRP.
Los objetos de dispositivo se representan mediante DEVICE_OBJECT estructuras, que administra el administrador de objetos. El administrador de objetos proporciona las mismas funcionalidades para los objetos de dispositivo que hace para otros objetos del sistema. En concreto, se puede asignar un nombre a un objeto de dispositivo y un objeto de dispositivo con nombre puede tener identificadores abiertos en él. Para obtener más información sobre los objetos de dispositivo con nombre, vea Objetos de dispositivo con nombre.
El sistema proporciona almacenamiento dedicado para cada objeto de dispositivo, denominado extensión de dispositivo, que el controlador puede usar para el almacenamiento específico del dispositivo. El sistema crea y libera la extensión del dispositivo junto con el objeto de dispositivo. Para obtener más información, consulte Extensiones de dispositivo.
En la ilustración siguiente se muestra la relación entre los objetos de dispositivo y el administrador de E/S.
En la ilustración se muestran los miembros de la estructura DEVICE_OBJECT que son de interés para un escritor de controladores. Para obtener más información sobre estos miembros, vea Crear un objeto de dispositivo, Inicializar un objeto de dispositivo y propiedades de objetos de dispositivo.