WINDOWS 驱动开发如何入门

dengchonglin 2012-11-24 10:47:18
各路大神~!
最近在做 WINDOWS XP 的驱动开发,查了很多资料还是不知道如何下手

网上查了很多的是根据 WINDOWS 驱动开发详解 这本书来说的

我下了这本书后发现他的编译环境比较难搭建,弄了很久也都没有成功~!
而且好多上线说的工具也找不到, 比如 DDK 这类的。

不知道大神们都是如何开发的呢??

我需要开发的是 WINDOWS 打印机驱动~!
...全文
3068 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingmax54212008 2014-03-07
  • 打赏
  • 举报
回复
C语言 和 C++ 都 可以开发打印驱动 http://bbs3.driverdevelop.com/
dengchonglin 2013-01-16
  • 打赏
  • 举报
回复
哎……,头疼啊, 还是没有着落。 看了一下 WDK 里面的打印机驱动, 好像不都是源码啊~! 好多都没有开放出来的呢~! 都是一些什么语言来的? 不是C/C++ 的嘛???? 郁闷中
「已注销」 2012-12-23
  • 打赏
  • 举报
回复
引用 26 楼 mypint_skyman 的回复:
引用 2 楼 jha334201553 的回复:我一直用的 WDK 7600.16385.1,wdk8也出来了,可以编译win8驱动, 环境?你是要弄到VS里面编译么? 我是用VC6别写代码,然后用命令行编译的,build就可以生成sys文件了,不是很好很快么?至于环境么,你找找VC6的驱动向导,一个dll插件(好像已经很老了,原先生成的代码有点需要调整下),可以生成……
用虚拟机+windbg调试呀
mypint_skyman 2012-12-23
  • 打赏
  • 举报
回复
引用 2 楼 jha334201553 的回复:
我一直用的 WDK 7600.16385.1,wdk8也出来了,可以编译win8驱动, 环境?你是要弄到VS里面编译么? 我是用VC6别写代码,然后用命令行编译的,build就可以生成sys文件了,不是很好很快么?至于环境么,你找找VC6的驱动向导,一个dll插件(好像已经很老了,原先生成的代码有点需要调整下),可以生成驱动的框架代码,也可以编译的。 ……
请问我只有一台电脑 怎么调试驱动啊? 能够补救蓝屏的方法啊。
bigbat 2012-12-22
  • 打赏
  • 举报
回复
dengchonglin 2012-12-17
  • 打赏
  • 举报
回复
引用 23 楼 kjackking 的回复:
我也在弄打印机驱动,菜鸟心开始,LZ一起哈。。。
兄弟,有眉目了没?
kjackking 2012-12-13
  • 打赏
  • 举报
回复
我也在弄打印机驱动,菜鸟心开始,LZ一起哈。。。
「已注销」 2012-12-07
  • 打赏
  • 举报
回复
引用 21 楼 dengchonglin 的回复:
引用 20 楼 m_cmd 的回复:WDK7.1支持XP 兄弟,能否提供一些思路如何开发打印机驱动?
WDK里面的src/print/里面有示例的
dengchonglin 2012-12-05
  • 打赏
  • 举报
回复
引用 20 楼 m_cmd 的回复:
WDK7.1支持XP
兄弟,能否提供一些思路如何开发打印机驱动?
m_cmd 2012-12-04
  • 打赏
  • 举报
回复
WDK7.1支持XP
dengchonglin 2012-12-03
  • 打赏
  • 举报
回复
引用 18 楼 m_cmd 的回复:
打印机驱动和一般的windows驱动模型完全不一样,不是WDM/WDF什么的。 Vista以后的打印机驱动模型和XP不一样,更多部分都移到应用层了。 写打印机驱动更像写应用程序或者DLL 直接用WDK编译好了,为什么要搞到Visual Studio里? 最新的WDK8.0不支持XP,只能配合VS2012编译
呀,那需要在 XP 下开发打印机驱动呢?
m_cmd 2012-12-01
  • 打赏
  • 举报
回复
打印机驱动和一般的windows驱动模型完全不一样,不是WDM/WDF什么的。 Vista以后的打印机驱动模型和XP不一样,更多部分都移到应用层了。 写打印机驱动更像写应用程序或者DLL 直接用WDK编译好了,为什么要搞到Visual Studio里? 最新的WDK8.0不支持XP,只能配合VS2012编译
sophyyoung 2012-11-29
  • 打赏
  • 举报
回复
引用 16 楼 jha334201553 的回复:
引用 9 楼 sophyyoung 的回复:我也在学windows驱动,报了个班,在坐等开班,学习呢求内部资料
还没有上课呢,凑不齐人,现在没什么人报班。
「已注销」 2012-11-29
  • 打赏
  • 举报
回复
引用 9 楼 sophyyoung 的回复:
我也在学windows驱动,报了个班,在坐等开班,学习呢
求内部资料
wang123321132321 2012-11-28
  • 打赏
  • 举报
回复
我也是新人,凭借我自己的两天的捉摸,现在已经写好了简单的驱动了,我用的是VS2010+WDK7.1的,但是我没有用DDKWizard。多去网上看看,多浏览资料,只要想学,就一定是可以的,先把我安装的文档附上希望对你有帮助,记住一定要严格按照上面的来,不能错! VS2010 WDK7.60 配置驱动开发环境(DDK驱动开发 WDK驱动开发) 2011-11-18 11:44:00| 分类: windows驱动开发|字号 订阅 本文参照原文: http://www.cppblog.com/guojingjia2006/archive/2011/03/19/142211.html 1. 安装VS2010,WDK7.60(GRMWDK_EN_7600_1) WDK下拉地址:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=11800 2. 新建VC 控制台项目(选择为空项目) 3. 新建项目配置“driver” ,点击下拉按钮-点击(配置管理器) 右键点击项目 -- 属性 -- 配置管理器 输入名称(driver)点击确定就可以了,其他的不要动哦! 完成后的效果: 点击确定按钮之后呈现出来的画面 鼠标右击新建的driver属性,会弹出以下窗口! 4. 设置VC++路径 [注意:这些路径要放在原有路径的后面,否则会报错] <我把wdk安装在D盘下> a. 配置可执行文件目录: ;D:\WinDDK\7600.16385.1\bin\x86; b. 配置包含目录: ;C:\WinDDK\7600.16385.1\inc\ddk ;D:\WinDDK\7600.16385.1\inc\;D:\WinDDK\7600.16385.1\inc\api; c. 配置库目录: ;D:\WinDDK\7600.16385.1\lib\win7\i386; (win7的填win7..XP的填wxp) 新建C/C++文件不然无C/C++设置选项 <刚开始我们创建了一个空的项目所以项目里没有c++文件,现在要做的就是在空的项目-源文件-添加一个新建项c++文件> 常规 目标文件扩展名:.sys //必选 6. 设置C/C++选项 常规选项卡 1 调试信息格式(C7 兼容(/Z7) //可选 2 警告等级 (2 级(/W2) //可选 3 将警告视为错误 (是(/wx) //可选 优化选项卡 优化(禁用/Od) //可选 预处理器 预处理器定义:WIN32=100;_X86_=1;WINVER=0x501;DBG=1 //必选 代码生成 启用最小重新生成:否 //可选 基本运行时检查:默认值 //可选 运行时库:多线程调试(/MTd) 或 多线程(/MT) //建议选<本人选择的是多线程调试(/MTd)> 缓冲区安全检查:否 //可选 (可避免出现 LINK : error LNK2001: 无法解析外部符号 __security_cookie) 高级 调用约定 __stdcall(/Gz) //必选 7. 链接器设置 常规 启用增量链接:否(/INCREMENTAL:NO) //建议选上 忽略导入库:是 // 可选 ( 设置为此值时,必须在附加库目录中加: E:\WinDDK\7600.16385.1\lib\win7\i386 这样项目就不会依赖 IDE 环境的设置) 如果否 ( 设置为此值时,将依赖 IDE 的环境的相关设置 ) 输入 附加依赖项 后面( %(AdditionalDependencies) 前面 )加入: ;ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB; //必选 【这一步在第一次操作时成功,再次操作时,报连接不上ntoskrnl.lib,去掉了,测试代码还是能生成的。】 //NT式驱动 ntoskrnl.lib WDM式驱动 wdm.lib ( HalXXX函数在Hal.lib,WmiXXX函数在 wmilib.lib ,NdisXXX函数在 ndis.lib ) ( 必要时需要增加微软的标准库 MSVCRT.LIB MSVCRTD.LIB(调试库) LIBCMT.LIBIBCMTD.LIB(调试库) ) ( 如果源码中有 source 文件,那么该文件的 TARGETLIBS 字段会列出该项目需要的库 ) 忽略所有默认库: 是 (/NODEFAULTLIB) //必选 清单文件: 生成清单 否 //原文未提到,不选可能报错 启用用户账户控制(UAC) 否 //必选 不然会出现 >LINK : fatal error LNK1295: “/MANIFESTUAC”与“/DRIVER”规范不兼容;链接时不使用“/MANIFESTUAC” 调试: 生成调试信息 是(/DEBUG) //可选 生成映像文件:是(/MAP) //可选 映像文件名:$(TargetDir)$(TargetName).map //可选 系统(System) 子系统: 控制台(/SUBSYSTEM:CONSOLE) //必选 堆栈保留大小:4194304 //可选 堆栈提交大小: 4096 //可选 驱动程序: 驱动程序(/DRIVER) //必选 高级: 入口点:DriverEntry //必选 随机基址:清空 //把框里的数据删掉。(yes也不是no也不是就是要一个干干净净的文本框) //必选 不然会出现 e:\xxx.sys : fatal error LNK1295: “/DYNAMICBASE”与“/DRIVER”规范不兼容;链接时不使用“/DYNAMICBASE” 数据执行保护(DEP): 清空 //把框里的数据删掉。(yes也不是no也不是就是要一个干干净净的文本框) //必选 不然会出现 e:\xxx.sys : fatal error LNK1295: “/NXCOMPAT:NO”与“/DRIVER”规范不兼容;链接时不使用“/NXCOMPAT:NO” 设置校验和:是(/RELEASE) //可选 基址:0x10000 //建议选上 命令行:/SECTION:INIT,D /IGNORE:4078 (建议不要写进去,会报错!) 最后给出一个超级简单的代码来测试一下我们配置的是否成功?? #include "ntddk.h" NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRINGRegistryPath) { return STATUS_UNSUCCESSFUL; } 如果没有报错那么恭喜你配置成功了! 在项目文件的上一级目录下,driver 文件夹下,生成 .sys 文件
aj3785583 2012-11-26
  • 打赏
  • 举报
回复
武安河 Windows 2000/xp WDM设备驱动程序开发不错
九州剑王 2012-11-26
  • 打赏
  • 举报
回复
我艹环境都没搭建好啊?你可以再买本儿谭文的寒江独钓,他连怎么下载怎么安装都告诉你了~我的资源上传里前几年上传了一个VS2008和WDK的空白工程,你可以下载后编译下就行了
dengchonglin 2012-11-26
  • 打赏
  • 举报
回复
引用 2 楼 jha334201553 的回复:
我一直用的 WDK 7600.16385.1,wdk8也出来了,可以编译win8驱动, 环境?你是要弄到VS里面编译么? 我是用VC6别写代码,然后用命令行编译的,build就可以生成sys文件了,不是很好很快么?至于环境么,你找找VC6的驱动向导,一个dll插件(好像已经很老了,原先生成的代码有点需要调整下),可以生成驱动的框架代码,也可以编译的。 ……
使用什么方法创建工程呢? 我用 VS2005 DS3.2 向导生成的工程编译不过。 正为这个头疼~!
dengchonglin 2012-11-26
  • 打赏
  • 举报
回复
你是新人,说明已经上路了 我是菜鸟~! 还没上路呢~!
九州剑王 2012-11-26
  • 打赏
  • 举报
回复
引用 10 楼 dengchonglin 的回复:
引用 8 楼 hfz8867879 的回复:引用 7 楼 dengchonglin 的回复:引用 6 楼 hfz8867879 的回复:我艹环境都没搭建好啊?你可以再买本儿谭文的寒江独钓,他连怎么下载怎么安装都告诉你了~我的资源上传里前几年上传了一个VS2008和WDK的空白工程,你可以下载后编译下就行了 哥哥,空白工程是所有驱动都适用吗? 我要开发打印机驱动 ……
我也是新人啊
加载更多回复(9)

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧