Routines de dispatch du pilote de classe de stockage
Les DRIVER_DISPATCH de pilotes de classe et les routines DispatchClose n’ont généralement aucune exigence spécifique à l’appareil. La plupart des pilotes de classe de stockage sont des pilotes intermédiaires ; leurs routines de distribution retournent simplement STATUS_SUCCESS pour indiquer qu’un objet d’appareil donné existe afin que les pilotes de niveau supérieur et, indirectement, les applications en mode utilisateur puissent ouvrir l’appareil pour les E/S et fermer l’appareil par la suite.
Les routines DispatchDeviceControl et DispatchInternalDeviceControl du pilote de classe doivent être résidentes ; autrement dit, ils ne peuvent pas être paginables ni faire partie de la section d’image paginable d’un pilote. Selon l’IOCTL d’une demande donnée, une telle routine de répartition peut appeler une routine paginée ou attendre un appel à partir d’un objet de synchronisation ou de notification (bloquant ainsi le thread en cours d’exécution), mais la routine de distribution doit être en mesure de passer un IOCTL inconnu à DISPATCH_LEVEL.
Un pilote de classe de stockage doit avoir une routine DispatchPnP pour les demandes de démarrage, d’arrêt et de suppression de l’appareil et de répondre à d’autres demandes PnP telles que la notification indiquant que l’appareil se trouve sur le chemin d’accès de pagination. Pour plus d’informations sur la gestion d’une demande de démarrage PnP, consultez Gestion du démarrage PnP dans un pilote de classe de stockage. Pour plus d’informations sur la gestion d’autres demandes PnP, consultez Gestion des demandes PnP sur les périphériques de stockage.
Un pilote de classe de stockage doit également avoir une routine DispatchPower pour les demandes de définition de l’état d’alimentation de son appareil. Pour plus d’informations, consultez Gestion des demandes d’alimentation sur les périphériques de stockage.
Un pilote de classe de stockage doit avoir une routine DispatchShutdown et éventuellement une routine DispatchFlushBuffers si son appareil met en cache les données en interne, si son appareil peut être attaché à un bus piloté par un HBA qui met en cache les données en interne, ou si un système de fichiers est superposé au-dessus du pilote de classe. Pour maintenir l’intégrité des données, un tel cache doit être vidé sur l’appareil avant l’arrêt du système.
Pour plus d’informations sur les exigences générales relatives aux routines de distribution, consultez également Écriture de routines de répartition.