Fonction IoRegisterLastChanceShutdownNotification (wdm.h)

La routine IoRegisterLastChanceShutdownNotification enregistre un pilote pour recevoir un IRP IRP_MJ_SHUTDOWN lorsque le système est arrêté, une fois que tous les systèmes de fichiers ont été vidés.

Syntaxe

NTSTATUS IoRegisterLastChanceShutdownNotification(
  [in] PDEVICE_OBJECT DeviceObject
);

Paramètres

[in] DeviceObject

Pointeur vers l’objet d’appareil de l’appareil pour lequel le pilote demande la notification d’arrêt. Le système transmet ce pointeur à la routine DispatchShutdown du pilote.

Valeur retournée

IoRegisterLastChanceShutdownNotification retourne STATUS_SUCCESS en cas de réussite ou le code d’erreur NTSTATUS approprié en cas d’échec.

Remarques

La routine IoRegisterLastChanceShutdownNotification enregistre le pilote pour recevoir un IRP IRP_MJ_SHUTDOWN pour l’appareil spécifié lorsque le système s’arrête. Le pilote reçoit un IRP de ce type pour chaque appareil pour lequel il s’inscrit pour recevoir une notification. Les pilotes gèrent IRP_MJ_SHUTDOWN IRPs dans leurs routines DispatchShutdown .

Pour tout appareil inscrit auprès de cette routine, le système envoie le IRP_MJ_SHUTDOWN IRP après que tous les systèmes de fichiers ont été vidés. Un seul pilote dans une pile d’appareils doit s’inscrire pour recevoir une notification d’arrêt, en appelant IoRegisterShutdownNotification ou IoRegisterLastChanceShutdownNotification.

Si le pilote cesse d’exiger une notification d’arrêt pour cet appareil, utilisez IoUnregisterShutdownNotification pour supprimer le pilote de la file d’attente de notification d’arrêt.

Un pilote qui appelle IoRegisterLastChanceShutdownNotification doit respecter les restrictions suivantes dans sa routine DispatchShutdown :

  • La routine DispatchShutdown ne doit pas appeler des routines paginables.
  • La routine DispatchShutdown ne doit pas accéder à la mémoire paginable.
  • La routine DispatchShutdown ne doit pas effectuer d’opérations d’E/S de fichier.
La plupart des pilotes qui nécessitent une notification d’arrêt doivent appeler la routine IoRegisterShutdownNotification , ce qui n’impose pas ces limitations à la routine DispatchShutdown et entraîne l’appel de la routine DispatchShutdown avant que les systèmes de fichiers soient vidés. Seuls les pilotes qui doivent effectuer un nettoyage une fois les systèmes de fichiers vidés, comme un pilote pour un périphérique de stockage de masse, doivent utiliser IoRegisterLastChanceShutdownNotification.

La routine DispatchShutdown inscrite est appelée avant que le gestionnaire d’alimentation envoie une demande IRP_MN_SET_POWER pour PowerSystemShutdown. La routine DispatchShutdown n’est pas appelée pour les transitions vers d’autres états d’alimentation.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows 2000 et versions ultérieures de Windows. Non disponible dans Microsoft Windows 98/Me.
Plateforme cible Universal
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs(storport),PowerIrpDDis(wdm)

Voir aussi

DispatchShutdown

IoRegisterShutdownNotification

IoUnregisterShutdownNotification