メモリにデータを割り当てるドライバを作成しました。システムがシャットダウンする前にデータをハードディスクに保存する必要があります。十分に調査し、コールバックを機能させるためにすでに数回試行しましたが、システムが閉じられ、通知が実行されません。
「SC」でサービスを照会すると、フラグ IGNORES_SHUTDOWN が返されます。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms685149%28v=vs.85%29.aspx
Microsoft サイトの 9 番目の段落によると、SERVICE_ACCEPT_SHUTDOWN 制御コードで SetServiceStatus を呼び出したすべての制御ハンドラーは、SERVICE_CONTROL_SHUTDOWN 制御コードを受け取ります。
SERVICE_ACCEPT_SHUTDOWN で SetServiceStatus を呼び出すにはどうすればよいですか? インターネットで検索しましたが、サービスのステータスを変更する方法が見つかりません。
任意のヒント?以下は、私が使用しているコードの抜粋です
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);