阅读:1303回复:1
关机
我写了个做磁盘读写拦截的程序,由于需要支持多个硬盘,所以就为每个磁盘都提供一个驱动,比如叫HD0.sys,HD1.sys,...绝大多数代码是一样的,只是在HOOK时分别HOOK不同的硬盘而已。
测试时,我在测试机装了两块硬盘,这样,HD0.sys和HD1.sys这两个驱动会起作用,WINDOWS下运行时一切正常,但是,在关机时,在有的机器上是“重启”,有的机器上是“蓝屏”。当只有一个硬盘时是正常的。 我的关机处理DiskPerfDispatchPower是不是写得不对啊? 哪位大侠帮帮我啊,多谢。 NTSTATUS DriverEntry(...) { ... DriverObject->MajorFunction[IRP_MJ_POWER] = DiskPerfDispatchPower; ... } NTSTATUS DiskPerfDispatchPower(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp ) { PDEVICE_EXTENSION deviceExtension; PoStartNextPowerIrp(Irp); IoSkipCurrentIrpStackLocation(Irp); deviceExtension = (PDEVICE_EXTENSION)DeviceObject->DeviceExtension; return PoCallDriver(deviceExtension->TargetDeviceObject, Irp); } |
|
沙发#
发布于:2005-06-08 10:26
好高深啊。。。
|
|