【发布时间】:2011-03-17 15:07:58
【问题描述】:
每当我重新审视使用 Visual Studio 的编译器和链接器构建 Windows 驱动程序的主题时,我会想到两件事:
官方不支持。确实,整个互联网的共识是,构建Windows驱动程序的正确方法是使用Windows自带的编译器、链接器和BUILD工具。驱动程序套件。但是,Visual Studio 2008 包含 /DRIVER 链接器选项,如下所述:
Use the /DRIVER linker option to build a Windows NT kernel mode driver.它有什么作用?如果不推荐使用它来构建驱动程序,为什么将它包含在 Visual Studio 中?它有效。我几乎不敢大声说出来,以免引起正义的内核开发人员的愤怒,但事情的真相是使用 Visual Studio 构建的驱动程序做工作。我们多年来一直在我的工作场所以这种方式构建它们,生成的二进制文件已部署在数百台机器上,并且没有任何问题。但是,我知道没有证据并不是没有证据,并且到目前为止没有任何问题并不一定意味着使用 VS 构建驱动程序是安全的。
这里真正困扰我的是缺乏信息。互联网上有一些使用 VS 构建驱动程序的人的帖子,它们总是得到相同的响应 - 不支持,不要这样做,如果你真的想通过 makefile 项目将 WDK 与 VS 集成使用 VS 的 IDE。但是,我没有找到一个回复指出您不应该使用 VS 构建驱动程序的具体原因。
那么,有谁知道如果您使用 VS 构建驱动程序会发生什么?会出什么问题?在什么情况下?我知道您必须自己设置所有编译器和链接器选项,这没关系,但是如果我设置错误会发生什么?驱动程序会编译失败,还是链接失败,或者如果它构建得很好,它会直接崩溃还是只有当星星对齐时才会崩溃?为什么会这样,是什么原因造成的?除了没有官方支持的事实之外,还有什么理由停止使用多年来一直像魅力一样工作的 VS 构建我们的驱动程序?如果官方不支持,VS为什么要加/DRIVER开关?
【问题讨论】: