0

メモリにデータを割り当てるドライバを作成しました。システムがシャットダウンする前にデータをハードディスクに保存する必要があります。十分に調査し、コールバックを機能させるためにすでに数回試行しましたが、システムが閉じられ、通知が実行されません。

「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);
4

0 に答える 0