vc驱动的ddk wdk的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vc驱动的ddk wdk的问题相关的知识,希望对你有一定的参考价值。

ddk和wdk 的区别,两者在构建驱动文件sys时有什么分别。 以及在vs2012 中怎样去配置,生成。该选择什么样的项目类型。

ddk就是wdk的前身,改了个名字而已,ddk时代如果想在VS里开发只能手动配置。装了WDK以后,VS新建工程的时候C++里会有Windows Driver这一项,直接新建工程就行了。追问

我这里没有看见!还有vs2012没看见有创建win32动态链接库选项是怎么回事?

追答

创建DLL和Win32应用程序在一起的,向导对话框出来以后Application type把Windows application改成DLL就是了。

你的WDK怎么装的,什么版本?另外只是猜测,有可能Windows 8.1的WDK不能在VS2012上用。

追问

有没有驱动普及知识和快速入门的?

另外请教c++的标准库层级图示!父子关系!还有那些库在win 下有的!哪些在Linux下有的?

追答

这... 当年都是看在线帮助学的。层级图,这也不知道哪儿给你弄去。不过STL继承关系很少就是这,主要有继承关系的就是流那块。GCC C++14的现在应该是全都有了,VC++其实常用的也都健在。

追问

我想知道在win 下该用那些库!而在linux下又用哪些库!就是说通用于两个平台的库

追答

通用于两个平台的驱动?还是代码?普通的STL类都是两边都有的,高级的东西我觉得你首先担心的不应该是库,而是这两边语法都不太一样。话说这还是你原来的问题么...

追问

遇到高手当然畅所欲言!问出存在已久的问题!

参考技术A 我的一般习惯做法是首先在工程中设置Configuration Type为Makefile,然后增加两个(也可以是一个)批处理文件——分别是ProjectBuild.bat和ProjectClean.bat。内如如下:
ProjectBuild.bat
@echo on
@echo %1 is chk or fre %2 is WXP or W2K or WNET.
if "%4"=="/a" call ProjectClean %1 %2
pushd.
call %BASEDIR%\bin\setenv.bat %BASEDIR% %1 %2
popd
@echo on
build

ProjectClean.bat
if exist Debug rd /s /q Debug
if exist Release rd /s /q Release
if exist obj%1_%2_x86 rd /s /q obj%1_%2_x86

当然这两个批处理文件可以合并为一个。

接着在NMake中设置(在check版本如下,如果是free版,则修改chk为fre)
Build Command Line = ProjectBuild chk WNET
ReBuild All Command Line = ProjectBuild chk WNET /a
Clean Command Line = ProjectClean chk WNET
Output = $(ProjectName).sys

接着增加你的C文件、H文件、资源文件(如果有的话)、makefile文件、sources文件到项目中就可以进行编译和连接了。

当然还有别的办法:需要通过修改命令行参数来实现。原来也用过,需要注意的是需要编译修改命令行参数和连接命令行参数等。

如何从 DDK 示例构建工作区?

【中文标题】如何从 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=43

Hollis 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 示例中没有,等待您的建议

以上是关于vc驱动的ddk wdk的问题的主要内容,如果未能解决你的问题,请参考以下文章

VS2013+WDK8.1 驱动开发环境搭建

如何安装WDK并运行编译一个工程

关于VS2013+WDK8.1写驱动文件配置问题

关于mingw

VC Mirror Driver显示虚拟驱动经典开发

关于windows下驱动程序开发