IoRegisterLastChanceShutdownNotification 関数 (wdm.h)

IoRegisterLastChanceShutdownNotification ルーチンは、すべてのファイル システムがフラッシュされた後、システムがシャットダウンされたときにIRP_MJ_SHUTDOWN IRP を受け取るドライバーを登録します。

構文

NTSTATUS IoRegisterLastChanceShutdownNotification(
  [in] PDEVICE_OBJECT DeviceObject
);

パラメーター

[in] DeviceObject

ドライバーがシャットダウン通知を要求するデバイスのデバイス オブジェクトへのポインター。 システムは、ドライバーの DispatchShutdown ルーチンにこのポインターを渡します。

戻り値

IoRegisterLastChanceShutdownNotification は、成功した場合はSTATUS_SUCCESS、失敗した場合は適切な NTSTATUS エラー コードを返します。

注釈

IoRegisterLastChanceShutdownNotification ルーチンは、システムのシャットダウン時に、指定したデバイスのIRP_MJ_SHUTDOWN IRP を受け取るドライバーを登録します。 ドライバーは、通知を受信するために登録するデバイスごとに、このような IRP を 1 つ受け取ります。 ドライバーは、DispatchShutdown ルーチン内IRP_MJ_SHUTDOWN IRP を処理します。

このルーチンに登録されているデバイスの場合、システムはすべてのファイル システムがフラッシュされた後 、IRP_MJ_SHUTDOWN IRP を送信します。 IoRegisterShutdownNotification または IoRegisterLastChanceShutdownNotification を呼び出すことで、シャットダウン通知を受け取るために登録する必要があるドライバーは、デバイス スタック内の 1 つだけです。

ドライバーがそのデバイスのシャットダウン通知を要求しなくなった場合は、 IoUnregisterShutdownNotification を使用して、シャットダウン通知キューからドライバーを削除します。

IoRegisterLastChanceShutdownNotification を呼び出すドライバーは、DispatchShutdown ルーチンで次の制限を満たす必要があります。

  • DispatchShutdown ルーチンは、ページング可能なルーチンを呼び出してはなりません。
  • DispatchShutdown ルーチンは、ページング可能なメモリにアクセスできません。
  • DispatchShutdown ルーチンは、ファイル I/O 操作を実行できません。
シャットダウン通知を必要とするほとんどのドライバーは 、IoRegisterShutdownNotification ルーチンを呼び出す必要があります。これにより、 DispatchShutdown ルーチンにこれらの制限が課されず、ファイル システムがフラッシュされる前に DispatchShutdown ルーチンが呼び出されます。 大容量記憶装置デバイスのドライバーなど、ファイル システムのフラッシュ後にクリーンアップを行う必要があるドライバーのみが、 IoRegisterLastChanceShutdownNotification を使用する必要があります。

Power Manager が PowerSystemShutdownIRP_MN_SET_POWER 要求を送信する前に、登録済みの DispatchShutdown ルーチンが呼び出されます。 DispatchShutdown ルーチンは、他の電源状態への移行には呼び出されません。

要件

要件
サポートされている最小のクライアント Windows 2000 以降のバージョンの Windows で使用できます。 Microsoft Windows 98/Me では使用できません。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

DispatchShutdown

IoRegisterShutdownNotification

IoUnregisterShutdownNotification