IRP_MJ_SHUTDOWN Уведомление

Я создал драйвер, который распределяет данные в памяти, мне нужно сохранить данные на жестком диске, прежде чем система выключится. Достаточно исследовал, уже несколько раз пытался заставить работать обратный вызов, но система закрыта и уведомление не выполняется.

При запросе сервиса с помощью «SC» возвращает флаг IGNORES_SHUTDOWN.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms685149%28v=vs.85%29.aspx

Согласно девятому абзацу сайта Microsoft, все обработчики управления, которые вызвали SetServiceStatus с управляющим кодом SERVICE_ACCEPT_SHUTDOWN, получают управляющий код SERVICE_CONTROL_SHUTDOWN.

Как мне вызвать SetServiceStatus с помощью SERVICE_ACCEPT_SHUTDOWN? Я искал в интернете и не могу найти как изменить статус сервиса.

Какие-нибудь советы? Ниже приведен фрагмент кода, который я использую

DRIVER_DISPATCH DispatchShutdown;
NTSTATUS DispatchShutdown(__in struct _DEVICE_OBJECT  *DeviceObject, __in struct _IRP  *Irp)
{
return 0;
}
...
DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = DispatchShutdown;
...
DeviceObject->Flags |= DO_BUFFERED_IO;

//status = IoRegisterLastChanceShutdownNotification(DeviceObject);
status = IoRegisterShutdownNotification(DeviceObject);

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]