在Windows重新启动/关闭时未调用DriverUnload

时间:2012-07-12 12:04:51

标签: windows driver windows-xp-embedded windows-embedded

我正在使用WinDbg调试驱动程序。在DriverUnload函数中,调用KdBreakPoint()

当我从设备管理器中禁用设备时,WinDbg会进入DriverUnload功能。

但是当我关机或重新启动Windows时(通过开始>关闭),调试器不会中断。 所以问题是:为什么Windows在重启或关机时不会调用DriverUnload函数?

(顺便说一句:我已经在PNP调度函数中添加了断点以捕获IRP_MN_QUERY_REMOVE_DEVICE / IRP_MN_REMOVE_DEVICE / IRP_MN_QUERY_STOP_DEVICE / IRP_MN_STOP_DEVICE,结果是相同的)

1 个答案:

答案 0 :(得分:3)

啊,解决方案很“简单”。根本没有被召唤。不过,我不得不查一查。

Windows 2000设备驱动程序手册:程序员指南声明:

  

在系统关闭时不调用驱动程序的卸载例程。

另见this thread

如果您有WDM驱动程序,请使用DispatchShutdownIRP_MJ_SHUTDOWN)。

另请参阅关于“关闭调度例程[WDK内核]”和“关闭电源管理[WDK内核]”的WDK(7600)文档。