Partager via


Routines dispatch du pilote de classe de stockage

Les routines de pilote de classe DRIVER_DISPATCH et 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 répartition 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 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 d’un objet de synchronisation ou de notification (bloquant ainsi le fil d'exécution en cours), mais la routine de répartition doit être en mesure de transmettre un IOCTL inconnu à DISPATCH_LEVEL.

Un pilote de classe de stockage doit avoir une routine DispatchPnP pour traiter les demandes de démarrage, d’arrêt et de suppression de l’appareil, et pour répondre à d’autres requêtes PnP telles que la notification indiquant que l’appareil se trouve sur le chemin 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 requêtes 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 que les demandes définissent 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 La rubrique Écriture de routines de répartition .