阅读:2305回复:13
小弟准备写一个WDM练手,先写一个串口的,这是我的理解:
串口驱动系统已经有了
写一个简单的串口驱动,应该是一个虚拟设备,因为如果是一个实际设备,就会覆盖系统的驱动,一些默认的串口使用程序就会有错。 所以实际上就是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 |
|
最新喜欢:![]() |
沙发#
发布于:2003-12-24 10:14
烂到没人理我了?
|
|
板凳#
发布于:2003-12-24 10:44
IoAttatchDeviceToDeviceSatck加到设备栈上,创建设备对象,包括自身的和过滤的,自身的有名字无扩展,过滤的有扩展无名字,就很好区别了。象SFILTER那样。。。。。。
|
|
|
地板#
发布于:2003-12-24 11:25
IoAttatchDeviceToDeviceSatck加到设备栈上,创建设备对象,包括自身的和过滤的,自身的有名字无扩展,过滤的有扩展无名字,就很好区别了。象SFILTER那样。。。。。。 如果既有名字也有扩展呢? 不知道有没有。 那我的这个串口设想对不对啊 |
|
地下室#
发布于:2003-12-24 11:57
在AddDevice里创建2个设备,一个过滤,一个和Win32程序通信,在扩展里做一个标志区分他们.
|
|
5楼#
发布于:2003-12-24 14:27
我是新手,来见识见识的:-)好! :D
|
|
6楼#
发布于:2003-12-25 10:12
那我创建一个串口的过滤,得用那个扩展名。
FILE_DEVICE_SERIAL_PORT? |
|
7楼#
发布于:2003-12-26 10:14
你可以写个过滤驱动程序!
建议你看看<windows NT设备驱动程序设计指南>,第15章里面的例子非常不错! |
|
|
8楼#
发布于:2003-12-26 13:26
那我创建一个串口的过滤,得用那个扩展名。 要创建的设备类型,必须和你要过滤的类型一致。。。。。。 |
|
|
9楼#
发布于:2003-12-27 10:25
不太明白。。对了。所谓的串口,并口驱动是什么意思?
我的感觉就是对特定的I/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或者读写文件。 大致步骤如此。容易上手一些。 |
|
|
11楼#
发布于:2003-12-31 09:10
呵呵
谢谢各位。 一开始想做一个通用的,挂在串口驱动上层。(对我来说难度有点大) 所以现在就只做了一个简单的,自己用,就是rayyang2000 的意思。呵呵。 |
|
12楼#
发布于:2004-01-06 21:05
我也是新手,我想问
引用 //--------------------------------------------------------- 在AddDevice里创建2个设备,一个过滤,一个和Win32程序通信,在扩展里做一个标志区分他们. //--------------------------------------------------------- 请问:大虾能不能大概写段程序。 |
|
13楼#
发布于:2004-01-13 21:44
想问一下它的inf文件怎么编写?
|
|