IoRegisterLastChanceShutdownNotification-Funktion (wdm.h)

Die IoRegisterLastChanceShutdownNotification-Routine registriert einen Treiber, um eine IRP_MJ_SHUTDOWN IRP zu erhalten, wenn das System heruntergefahren wird, nachdem alle Dateisysteme geleert wurden.

Syntax

NTSTATUS IoRegisterLastChanceShutdownNotification(
  [in] PDEVICE_OBJECT DeviceObject
);

Parameter

[in] DeviceObject

Zeiger auf das Geräteobjekt des Geräts, für das der Treiber die Benachrichtigung zum Herunterfahren anfordert. Das System übergibt diesen Zeiger an die DispatchShutdown-Routine des Fahrers.

Rückgabewert

IoRegisterLastChanceShutdownNotification gibt STATUS_SUCCESS bei Erfolg oder den entsprechenden NTSTATUS-Fehlercode bei Einem Fehler zurück.

Hinweise

Die IoRegisterLastChanceShutdownNotification-Routine registriert den Treiber, um eine IRP_MJ_SHUTDOWN IRP für das angegebene Gerät zu erhalten, wenn das System heruntergefahren wird. Der Treiber erhält eine solche IRP für jedes Gerät, für das er sich registriert, um eine Benachrichtigung zu erhalten. Treiber verarbeiten IRP_MJ_SHUTDOWN IRPs innerhalb ihrer DispatchShutdown-Routinen .

Für jedes Gerät, das bei dieser Routine registriert ist, sendet das System die IRP_MJ_SHUTDOWN IRP, nachdem alle Dateisysteme geleert wurden. Nur ein Treiber in einem Gerätestapel sollte registriert werden, um eine Benachrichtigung zum Herunterfahren zu erhalten, indem er entweder IoRegisterShutdownNotification oder IoRegisterLastChanceShutdownNotification aufruft.

Wenn der Treiber keine Benachrichtigung zum Herunterfahren für dieses Gerät mehr erfordert, verwenden Sie IoUnregisterShutdownNotification , um den Treiber aus der Benachrichtigungswarteschlange zum Herunterfahren zu entfernen.

Ein Treiber, der IoRegisterLastChanceShutdownNotification aufruft , muss die folgenden Einschränkungen in seiner DispatchShutdown-Routine erfüllen:

  • Die DispatchShutdown-Routine darf keine auslagerungsfähigen Routinen aufrufen.
  • Die DispatchShutdown-Routine darf nicht auf ausgelagerten Arbeitsspeicher zugreifen.
  • Die DispatchShutdown-Routine darf keine Datei-E/A-Vorgänge ausführen.
Die meisten Treiber, die eine Benachrichtigung zum Herunterfahren erfordern, sollten die IoRegisterShutdownNotification-Routine aufrufen, die diese Einschränkungen für die DispatchShutdown-Routine nicht aufzwingt und die DispatchShutdown-Routine aufruft, bevor die Dateisysteme geleert werden. Nur Treiber, die einige Bereinigungen durchführen müssen, nachdem die Dateisysteme geleert wurden, z. B. ein Treiber für ein Massenspeichergerät, sollten IoRegisterLastChanceShutdownNotification verwenden.

Die registrierte DispatchShutdown-Routine wird aufgerufen, bevor der Power Manager eine IRP_MN_SET_POWER Anforderung für PowerSystemShutdown sendet. Die DispatchShutdown-Routine wird nicht für Übergänge zu anderen Energiezuständen aufgerufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows 2000 und höheren Versionen von Windows. In Microsoft Windows 98/Me nicht verfügbar.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Weitere Informationen

DispatchShutdown

IoRegisterShutdownNotification

IoUnregisterShutdownNotification