2013-01-17 46 views
2

我是新来的Windows驱动程序开发人员,所以如果我的问题太愚蠢,请耐心等待。那么,我不确定为什么,如MSDN所建议的那样,以及我认为的方式,主机(例如开发驱动程序)和目标计算机(例如调试驱动程序)需要是两个独立的。为什么这样分离?我确实试图通过在主机上部署和调试驱动程序来合并这两种驱动程序,在这种主机上我正在开发一个驱动程序,而且它似乎在Windows中没有反对意见。谢谢。windows驱动程序开发

PS。这样的来源http://msdn.microsoft.com/en-us/library/windows/hardware/hh698272(v=vs.85).aspx让我这么想。

+0

系统可能会死锁。 (在单个处理器系统上,它几乎是必然的。) –

+0

这是唯一的原因吗?谢谢 –

+0

不知道,但它是一个很好的IMO。基本上,底线是如果你不介意系统崩溃的风险,并且如果它似乎对你有用,请继续。只要确保你的备份是好的。 –

回答

2

实际上,当您正在开发和测试驱动程序时,在很多情况下您会遇到系统崩溃(BSOD),并且您的系统可能无法启动。在这种情况下,您的开发+调试器环境也不见了/无法访问。

+0

当我们说测试一个驱动程序时,我们是否需要一个用于该驱动程序的设备?或者微软公开了一些仿真器或仿真器类型的接口来测试驱动程序? – DeveloperLove

+0

@DeveloperLove,如果你正在为一些实际的硬件设备编写驱动程序,那么你将不得不插入它。但是,如果驱动程序实际上不是物理设备如文件系统过滤器驱动程序,则不需要额外的东西。希望这解释。 – Rohan

+0

感谢Rohan为你的答复..就像我开始在Windows驱动程序开发..我想我会开始与音频驱动程序..但正如你告诉我们,我们需要有一些设备..所以与USB我可以开始和领先?而且,我怀疑我们是否也可以使用音频,图像,显示驱动程序?由于设备与这些驱动程序已经是我的电脑的一部分... – DeveloperLove

0

内核调试需要两个独立的机器。你不能通过明显的原因来调试自己(调试器和调试对象在同一个内核中并且出现死锁)。当然,目标机器可以是虚拟机器。

0

当我们开发一个驱动程序并进行测试时,系统会崩溃,并出现一个蓝屏(称为蓝屏死机蓝屏)。这不像开发用户模式应用程序那样,并且由于内存错误而崩溃。您的驱动程序将作为内核模式应用程序运行,如果由于任何非法内存操作而崩溃,那么整个系统就会消失。这不是一个简单的问题需要解决,您需要登录到安全模式并从系统中删除驱动程序以恢复它。

由于这个原因,最好使用目标机器大多是安装了驱动程序的VM和主机,我们将使用调试器来调试驱动程序。