我是Windows驱动程序开发新手,如果我的问题太愚蠢,请耐心等待。 那么,我不知道为什么,正如MSDN所build议的那样,以及我认为的方式,主机(例如开发驱动程序)和目标计算机(例如debugging驱动程序)需要是两个独立的。 为什么这种分离? 我试图通过在主机上部署和debugging一个驱动程序来合并这两个驱动程序,在这个驱动程序中我正在开发一个驱动程序,而且似乎没有任何异议。 谢谢。
PS。 像这样的源代码http://msdn.microsoft.com/en-us/library/windows/hardware/hh698272(v=vs.85).aspx让我这么想。
实际上,当您开发和测试一个驱动程序时,在很多情况下,您将会遇到系统崩溃(BSOD),您的系统可能无法启动。 在这种情况下,您的开发+调试器环境也不见了/无法访问。
内核调试需要两个独立的机器。 你不能通过显而易见的原因来调试自己(一个调试器和一个调试对象在同一个内核中,并出现死锁)。 当然,目标机器可以是虚拟的。
当我们开发一个驱动程序并进行测试时,系统会崩溃,并出现一个蓝屏(称为蓝屏死机)。 这不像开发一个用户模式应用程序,并由于内存错误而崩溃。 您的驱动程序将作为内核模式应用程序运行,如果由于任何非法的内存操作而崩溃,那么整个系统将不复存在。 这不是一个简单的问题需要解决,您需要登录到安全模式并从系统中删除驱动程序来恢复它。
由于这个原因,最好使用一台目标机器,主要是安装了驱动程序的虚拟机和主机,我们将使用调试器来调试驱动程序。