如何从 DDK 示例构建工作区?
Posted
技术标签:
【中文标题】如何从 DDK 示例构建工作区?【英文标题】:How to build workspace from DDK examples? 【发布时间】:2009-06-16 04:02:37 【问题描述】:我是win32 编程和驱动程序编程的新手。我已经在我的系统上安装了 Windows DDK,并且有一些使用 DDK 的示例,但这些示例没有 dsw 文件。
我想知道如何创建 .dsw 文件,以便可以在 VC6 中打开该工作区。
【问题讨论】:
【参考方案1】:大多数在 Visual Studio 中构建 DDK/WDK 项目的人都是使用调用 DDK 的 build.exe
实用程序的“makefile”项目来实现的。这非常有效 - 您可以在使用标准的、受支持的 DDK 工具构建 DDK 项目时获得 Visual Studio 的代码导航功能。
请注意,DDK 带有它自己的一组编译器,这些编译器应该用于构建 DDK 项目。
OSR 有一些 cmd 脚本可以让这更容易(我已经有好几年没有用这些脚本做了任何事情了;我真的不记得它们工作得有多好):
http://www.osronline.com/article.cfm?article=43Hollis Technology 提供了另一个类似的工具:
http://www.hollistech.com/Resources/ddkbuild/ddkbuild.htm就调试而言,不幸的是 VS 调试器不适用于内核模式驱动程序调试。为此,请获取具有大量调试器的 Debugging Tools for Windows 软件包。 GUI 调试器 WinDbg 非常好,即使它不完全符合 Visual Studio 的可用性。调试工具的文档非常出色 - 您只需阅读 WinDbg 文档即可了解很多有关 Windows 内部结构的信息。
【讨论】:
“自己的编译器集”——真的吗?我认为它使用与 IDE 相同的(命令行驱动的)编译器。 在次要版本号区域它们通常是略有不同的版本——我不是说你会遇到一堆问题,但DDK团队肯定不会支持其他编译器。此外,当新版本的 Windows 发布时,DDK 编译器中通常会出现一些新内容,而这些新内容不在已发布的 VC 版本中。【参考方案2】:我上次查看时(几年前),您没有使用 Visual Studio IDE 构建设备驱动程序:DDK 有自己的 build.exe 实用程序(类似想法但与 makefile 不同);显然这在 2008 年初仍然如此,请参阅http://groups.google.com/group/microsoft.public.development.device.drivers/browse_thread/thread/4382c9b66f8611e9?pli=1
我希望在 DDK 文档中描述“如何构建”。
【讨论】:
嗨,ChrisW,感谢您提供的信息。这意味着没有办法通过DDK示例进行调试?我想逐行执行并了解流程。对于等待您的响应的 DDK 示例,如何做到这一点 嗯,构建可以生成符号调试信息文件,所以调试是可能的。我不认为您可以使用 Visual Studio IDE 调试器(尽管这可能取决于它是哪种设备驱动程序:它是用户模式还是您感兴趣的内核模式驱动程序?)。不使用 VS IDE 调试器并不意味着您不能调试:这意味着您使用了不同类型的调试器(几年前我这样做时,主要的内核模式调试器被称为 WinDbg 和/或 Softice)。 您应该仍然可以使用调试器,尽管 Visual Studio 调试器可能无法用于驱动程序开发 这听起来可能不是个好消息,但是一旦你学会了如何构建示例、调试和阅读 DDK 文档,剩下的工作或多或少就很普通了.【参考方案3】:我认为最好使用此工具与 Visual Studio 2005、2008 或 2010 集成:
http://visualddk.sysprogs.org/versions/1.5.6
【讨论】:
【参考方案4】:ChrisW 是正确的,你不能使用 Visual Studio(除非有办法设置它)。 无论如何,要开始调试,您可以使用DebugView 打印带有DbgPrint 的简单消息。
【讨论】:
【参考方案5】:VC6现在很老了,不能用更新的版本吗?无论如何,我记得,您可以将项目文件作为工作区打开,IDE 将为您创建 .dsw 文件。
【讨论】:
您好,感谢您的快速回复。但如果我是正确的,win ddk 示例中没有项目文件。我只能看到 makefile、makefile.mk 和项目文件,你指的是 .dsp 文件,DDK 示例中没有,等待您的建议以上是关于如何从 DDK 示例构建工作区?的主要内容,如果未能解决你的问题,请参考以下文章
2 只鼠标,在 Windows 上仅捕获一只鼠标(DirectInput、DDK、Linux 等)