Функция 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 для каждого устройства, которое он регистрирует для получения уведомлений. Драйверы обрабатывают IRP_MJ_SHUTDOWN IRP в своих подпрограммах DispatchShutdown .

Для любого устройства, зарегистрированного с помощью этой подпрограммы, система отправляет IRP_MJ_SHUTDOWN IRP после очистки всех файловых систем. Только один драйвер в стеке устройств должен зарегистрироваться для получения уведомления о завершении работы, вызвав IoRegisterShutdownNotification или IoRegisterLastChanceShutdownNotification.

Если драйвер перестает требовать уведомления о завершении работы для этого устройства, используйте IoUnregisterShutdownNotification , чтобы удалить драйвер из очереди уведомлений о завершении работы.

Драйвер, вызывающий IoRegisterLastChanceShutdownNotification , должен соответствовать следующим ограничениям в своей подпрограмме DispatchShutdown :

  • Подпрограмма DispatchShutdown не должна вызывать подпрограммы, доступные для страниц.
  • Подпрограмма DispatchShutdown не должна обращаться к страничной памяти.
  • Подпрограмма DispatchShutdown не должна выполнять никаких операций ввода-вывода файлов.
Большинство драйверов, требующих уведомления о завершении работы, должны вызывать подпрограмму IoRegisterShutdownNotification , которая не накладывает эти ограничения на подпрограмму DispatchShutdown и вызывает подпрограмму DispatchShutdown перед очисткой файловых систем. IoRegisterLastChanceShutdownNotification следует использовать только для драйверов, которые должны выполнить некоторую очистку после очистки файловой системы, например драйвер для запоминающего устройства.

Зарегистрированная подпрограмма DispatchShutdown вызывается до того, как диспетчер управления питанием отправляет IRP_MN_SET_POWER запрос на PowerSystemShutdown. Подпрограмма DispatchShutdown не вызывается для перехода в другие состояния питания.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 2000 и более поздних версиях Windows. Недоступно в Microsoft Windows 98/Me.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

См. также раздел

DispatchShutdown

IoRegisterShutdownNotification

IoUnregisterShutdownNotification