Compartir a través de


Rutinas de distribución del controlador de clase Storage

Las rutinas de controlador de clase DRIVER_DISPATCH y DispatchClose normalmente no tienen requisitos específicos del dispositivo. La mayoría de los controladores de clase de almacenamiento son controladores intermedios; sus rutinas de distribución simplemente devuelven STATUS_SUCCESS para indicar que existe un objeto de dispositivo determinado para que los controladores de nivel superior y, indirectamente, las aplicaciones en modo de usuario puedan abrir el dispositivo para E/S y cerrar el dispositivo después.

Las rutinas DispatchDeviceControl y DispatchInternalDeviceControl del controlador de clase deben ser residentes; es decir, no pueden ser paginables ni formar parte de la sección pageable-image de un controlador. Dependiendo del IOCTL de una solicitud determinada, una rutina de despacho podría llamar a una rutina paginada o esperar una llamada desde un objeto de sincronización o notificación (bloqueando así el subproceso en ejecución), pero la rutina de despacho debe ser capaz de manejar un IOCTL desconocido en el nivel DISPATCH_LEVEL.

Un controlador de clase de almacenamiento debe tener una rutina DispatchPnP para que las solicitudes inicien, detengan y quiten el dispositivo y respondan a otras solicitudes PnP, como la notificación de que el dispositivo está en la ruta de paginación. Para obtener más información sobre cómo controlar una solicitud de inicio de PnP, consulte Control del inicio de PnP en un controlador de clase de almacenamiento. Para obtener más información sobre el control de otras solicitudes PnP, consulte Control de solicitudes PnP a periféricos de almacenamiento.

Un controlador de clase de almacenamiento también debe tener una rutina DispatchPower para las solicitudes para establecer el estado de energía de su dispositivo. Para más información, consulte Control de solicitudes de energía a periféricos de almacenamiento.

Un controlador de clase de almacenamiento debe tener una rutina DispatchShutdown y, posiblemente, una rutina DispatchFlushBuffers si su dispositivo almacena en caché los datos internamente, si su dispositivo podría estar conectado a un bus controlado por un HBA que almacena en caché los datos internamente o si un sistema de archivos está superado por encima del controlador de clase. Para mantener la integridad de los datos, esta memoria caché debe vaciarse en el dispositivo antes de apagar el sistema.

Consulte también Escritura de rutinas de distribución para obtener más información sobre los requisitos generales de las rutinas de envío.