论坛: 编程破解 标题: 我想学习编写驱动程序,用C/C++可以吗? 复制本贴地址    
作者: yinhaidong [yinhaidong]    论坛用户   登录
如果C/C++可以用来开发驱动程序的话,我该用Visual C++还是C++ Builder呢,他们之间有什么不同之处呢?是否都能够用来达到相同的目的?请大家多多指教。

地主 发表时间: 11/11 20:11

回复: xtay [xtay]      登录
不管你用什么语言,都能达到相同的目的。

B1层 发表时间: 11/11 23:08

回复: xtay [xtay]      登录
不管你用什么语言,都能达到相同的目的。

B2层 发表时间: 11/11 23:08

回复: NetDemon [netdemon]   ADMIN   登录
错了,
写驱动程序必须用MS-DDK,(类似SDK,你可以理解为VC的一个扩充插件) C++Builder是不适合的,当然,如果你够牛,用记事本加任何一个C编译器
也可以写出来,但没有人这么蠢

B3层 发表时间: 11/11 23:15

回复: softlib [softlib]   论坛用户   登录
VC,BCB 只能写 APP 程序。装套 DriverStudio 默认是 C+ 用 VC 辅
助编译,如果是 DDK 可以把 DDK 的 BUILD.EXE 集成到 VC 环境中。

B4层 发表时间: 11/12 00:40

回复: flashsky [flashsky]   论坛用户   登录
大家回答的都正确也都不准确
从语言上来讲:编写WIN的驱动必须用ANSI 语法,也就是说标准C语言,但允许嵌入DDK的API调用(类似UNIX的服务调用),这点你只要看一下DDK文档的第一篇就说的很清楚
WIN的驱动程序必须用DDK的build来编译,但是可以集成到VC编译器中一起运行,这意味着你可以使用任何一种编译器写代码,但是需要使用DDK的BUILD来构建最后的二进制代码(与VC集成了也只是VC去调用这个BUILD而已),你还需要手工的编写一些编译的配置文件。

B5层 发表时间: 11/12 09:11

回复: yinhaidong [yinhaidong]   论坛用户   登录
是不是就是用C语言加上DDK编译器呢?C和C++之间有什么不同呢?DDK是什么?请大家继续多多指教!

B6层 发表时间: 11/12 09:43

回复: softlib [softlib]   论坛用户   登录
要这么说,那还有很多地方不正确。首先 WIN 驱动那么也包括 9X 下的,
VToolsD 完全可以用 C+ 来写,把一些 DDK API 封状在类中。再说 NT/2K
/XP 的。不知道都看没看过 OSR 和 PCAUSA 的一些例子,他们有很多例子
都是用 C+ 形式提供的。比如 OSR 的 CPP Kernel Runtime Library。还有说 ANSI 就等于 标准C 这完全是种错误的概念。ANSI 只是 美国国家标准化组织 的缩写。那么这个标准包括 ANSI C 也当然包括 ANSI C+。比如大多 STL 设计。

B7层 发表时间: 11/12 16:53

回复: ricky [ricky]   版主   登录
http://www.driverdevelop.com/
我以前就是在那里入的门,可以回答你的一切问题

B8层 发表时间: 11/12 17:02

回复: flashsky [flashsky]   论坛用户   登录
呵呵,多谢指教,不过有些问题
用VToolsD,OSR这些封装以后,当然可以用C++来写,不过不清楚是他们根据语法分析把对应的C++转成C以后再编译还是直接以C++编译?如果是前者就不能说C++可以写驱动,因为只是用C++的语法再把其转成C而不是使用C++本身的编译器来使用,那这样我可以用VB写驱动了,然后自己做个工具把其转化成C的语法也未尝不是可能。其实严格说什么语言都只是一种表示法而已,都可以写驱动,我就是用伪代码写,然后再自己写一个伪代码C的工具也行,只有用了对应的编译器生成的话,才会有很多不同,关于为什么强调用标准C,也正是出于这一点,DDK的文档上关于这点说的很清楚。如果是他们直接提供的C++编译器可以生成的驱动话,那就是我错了,有时间象你多请教这方面的一些知识。

DDK,WINPCAP,PCAUSA的源代码我查了一下,无论针对WIN9X和WIN2K的都没有CPP的代码,除了用于测试和安装的代码是CPP提供的,你估计看的有错吧。

关于ANSI是我说错了,我少打了一个C


B9层 发表时间: 11/12 18:23

回复: softlib [softlib]   论坛用户   登录
我说的只是书写上,并没有提到编译。如果按你这么说,我那种说法肯定
是不严格。那就是我对题目理解上的问题。我写驱动时间不是很长。但
也有些日子。我想我还是能够分清APP与DRIVER区别的。我说的 CPP 都是
DRIVER,还提供了不少 LIB 封状了一些函数与操作符。如ExAllocatePoolXXX 等都以 new 形式给出。当然这也只是书写上的。

B10层 发表时间: 11/12 22:30

回复: yinhaidong [yinhaidong]   论坛用户   登录
你们越说越复杂!我急要这个驱动,请人写要多少钱呢?

B11层 发表时间: 11/13 00:31

回复: willok [willok]   论坛用户   登录
要写个什么的驱动??给我说说!呵呵!
其实写驱动用什么语言不重要!
你就是用汇编也可以写但是效率太低了!
一般的开发环境是VC + DDK。语言用C或者C++,MS推荐用C
在这里VC的作用其实就是一个编辑环境!
还有就是DDK在编译的时候需要调用VC的一些库!
这里由于MS的原因在DDK中就只支持VC!
而且只能支持几个版本!(5.×-6.×)就连最新的.net都不支持!

B12层 发表时间: 12/01 20:34

回复: flyrise [flyrise]   论坛用户   登录
算了,你们还是来研究单片机,其实单片机驱动就是一个最简单的硬件驱动程序,用ASM和C加必要的工具就行了。


请问各位有没有用C++BUILDER的?本人正在学,有时间请多指教!互相提高怎么样?

My E-Mail:llf-home@163.net

B13层 发表时间: 12/15 17:26

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号