我创建了一个在内存中分配数据的驱动程序,我需要在系统关闭之前将数据保存在硬盘上。研究得够多,已经尝试过几次让回调起作用,但是系统关闭,没有通知。
使用“SC”查询服务时,返回标志 IGNORES_SHUTDOWN。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms685149%28v=vs.85%29.aspx
根据微软网站的第九段,所有调用了带有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);