felics
驱动牛犊
驱动牛犊
  • 注册日期2003-05-20
  • 最后登录2010-06-24
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1303回复:1

关机

楼主#
更多 发布于:2005-06-06 16:29
我写了个做磁盘读写拦截的程序,由于需要支持多个硬盘,所以就为每个磁盘都提供一个驱动,比如叫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);

}
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-06-08 10:26
好高深啊。。。
游客

返回顶部