firewater2000
驱动牛犊
驱动牛犊
  • 注册日期2003-11-14
  • 最后登录2004-03-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2306回复:13

小弟准备写一个WDM练手,先写一个串口的,这是我的理解:

楼主#
更多 发布于:2003-12-24 08:55
串口驱动系统已经有了
写一个简单的串口驱动,应该是一个虚拟设备,因为如果是一个实际设备,就会覆盖系统的驱动,一些默认的串口使用程序就会有错。

所以实际上就是filter驱动,只处理自定义的irp,其他的全部下传到系统自带的串口驱动中(比如,其他app发来的irp全部交给默认的处理,只有自己的irp才在filter驱动中完成)。
但是怎么识别是自己的app发来的irp呢?IoControlDevice    IRP_MJ_CONTROL_DEVICE
绑定一个GUID,以后自己的APP可以使用,应该有UNLOAD程序。
预期包含 READ WRITE TEST三个ROUTING。
但是怎么使系统知道这个驱动是SERIAL PORT 的FLITER DRIVER?


不要笑掉大家大牙。忽忽。 :D

最新喜欢:

txqxctxqxc
firewater2000
驱动牛犊
驱动牛犊
  • 注册日期2003-11-14
  • 最后登录2004-03-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-24 10:14
烂到没人理我了?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2003-12-24 10:44
IoAttatchDeviceToDeviceSatck加到设备栈上,创建设备对象,包括自身的和过滤的,自身的有名字无扩展,过滤的有扩展无名字,就很好区别了。象SFILTER那样。。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
firewater2000
驱动牛犊
驱动牛犊
  • 注册日期2003-11-14
  • 最后登录2004-03-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-24 11:25

IoAttatchDeviceToDeviceSatck加到设备栈上,创建设备对象,包括自身的和过滤的,自身的有名字无扩展,过滤的有扩展无名字,就很好区别了。象SFILTER那样。。。。。。

如果既有名字也有扩展呢?
不知道有没有。
那我的这个串口设想对不对啊
qinxg
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分37分
  • 威望27点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-12-24 11:57
在AddDevice里创建2个设备,一个过滤,一个和Win32程序通信,在扩展里做一个标志区分他们.
jawbin
驱动牛犊
驱动牛犊
  • 注册日期2003-10-04
  • 最后登录2004-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-12-24 14:27
我是新手,来见识见识的:-)好! :D
firewater2000
驱动牛犊
驱动牛犊
  • 注册日期2003-11-14
  • 最后登录2004-03-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-12-25 10:12
那我创建一个串口的过滤,得用那个扩展名。
FILE_DEVICE_SERIAL_PORT?
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2003-12-26 10:14
你可以写个过滤驱动程序!
建议你看看<windows NT设备驱动程序设计指南>,第15章里面的例子非常不错!
琢磨悟真知
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
8楼#
发布于:2003-12-26 13:26
那我创建一个串口的过滤,得用那个扩展名。
FILE_DEVICE_SERIAL_PORT?

要创建的设备类型,必须和你要过滤的类型一致。。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
makefriend8
驱动小牛
驱动小牛
  • 注册日期2003-08-01
  • 最后登录2014-06-27
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望111点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-12-27 10:25
不太明白。。对了。所谓的串口,并口驱动是什么意思?
我的感觉就是对特定的I/0端口进行操作。
是不是还是和中断有关?
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-12-30 20:22
如果不急着学Pnp/Power,可以这样
1. 做一个巨简单的KMD(其实就是不处理Pnp/power的driver),只有DriverEntry, Unload, Create, Close, Cleanup, DeviceIoControl, Read/write。
2. DriverEntry里面创建一个Control DeviceObject和Symbolic Link Name负责和你的app通讯;再创建一个假的Serial Port Device Object,Symbolic Link Name就叫\\\\DosDevices\\\\COMx,x随便你起,只要不是现存的
3. 在DeviceIoControl Handler里面把 Serial port的IRP都返回STATUS_SUCCESS,除了SET_WAIT_MASK,让他PENDING,并记录下来,在Cleanup里面把这个Irp cancel掉
4. 读写里面很简单随便弄个KdPrint或者读写文件。
大致步骤如此。容易上手一些。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
firewater2000
驱动牛犊
驱动牛犊
  • 注册日期2003-11-14
  • 最后登录2004-03-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-12-31 09:10
呵呵
谢谢各位。
一开始想做一个通用的,挂在串口驱动上层。(对我来说难度有点大)
所以现在就只做了一个简单的,自己用,就是rayyang2000
的意思。呵呵。
gunsrose
驱动牛犊
驱动牛犊
  • 注册日期2003-12-08
  • 最后登录2004-02-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-01-06 21:05
我也是新手,我想问

引用

//---------------------------------------------------------
在AddDevice里创建2个设备,一个过滤,一个和Win32程序通信,在扩展里做一个标志区分他们.
//---------------------------------------------------------

请问:大虾能不能大概写段程序。
Hover
驱动牛犊
驱动牛犊
  • 注册日期2003-02-04
  • 最后登录2004-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-01-13 21:44
想问一下它的inf文件怎么编写?
游客

返回顶部