acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
40楼#
发布于:2004-03-01 11:16
驱动中用C的比较多,C++的例子不多。大都是DS的。我C++用的不算太好。对项目的延续性、扩展性没有太多的经验。现在就用C++可能体现不出C++的优势。
版本管理软件倒是很想使用。目前也正在开始学习。:)

btw:我接触过一些国外大公司的网卡驱动软件,一个项目,各个OS,各个接口都写在一起。像win98/2k/nt/xp,usb/pcmcia/pci/minipci等等都是放在代码中。全都靠条件编译来搞定。真是让人看的脑袋都大。
wuyanfeng
驱动小牛
驱动小牛
  • 注册日期2003-08-26
  • 最后登录2011-05-06
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望127点
  • 贡献值0点
  • 好评度103点
  • 原创分0分
  • 专家分0分
41楼#
发布于:2004-03-01 12:59
驱动中用C的比较多,C++的例子不多。大都是DS的。我C++用的不算太好。对项目的延续性、扩展性没有太多的经验。现在就用C++可能体现不出C++的优势。
版本管理软件倒是很想使用。目前也正在开始学习。:)

btw:我接触过一些国外大公司的网卡驱动软件,一个项目,各个OS,各个接口都写在一起。像win98/2k/nt/xp,usb/pcmcia/pci/minipci等等都是放在代码中。全都靠条件编译来搞定。真是让人看的脑袋都大。

DS 就不要用了.还不够他烦的.
bakerj
驱动牛犊
驱动牛犊
  • 注册日期2004-02-26
  • 最后登录2005-08-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
42楼#
发布于:2004-03-01 15:35
我安装了toaster( enum), 也按照步骤安装了驱动,而且用超级终端也可以在COM20, COM21 互发数据,为什么VC程序中用
CreateFile("COM20",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING, 0,NULL) 总是得到0xffff invalid handle ?

Error code=0x02, can not find file


补充:
重新启动机器,然后启动虚拟端口后再等一会,可以打开文件了,但是我发现当没有数据的时候,对真实端口读数据会返回 read bytes=0, 对虚拟端口读数据就会死等:
if( bIsEmpty ){
IoMarkIrpPending( Irp );
IoSetCancelRoutine( Irp, RequestCancelReadRoutine);
ExInterlockedInsertTailList( &deviceExtension->ReadIrpQueue, &Irp->Tail.Overlay.ListEntry, &deviceExtension->CancelSpinLock );
status = STATUS_PENDING;
return status;

不知道理解的是否正确,如有错误还请谅解~
是不是需要调整呢? 多谢!

[编辑 -  3/2/04 by  bakerj]
programming is game
eastcent
驱动牛犊
驱动牛犊
  • 注册日期2004-03-03
  • 最后登录2005-02-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
43楼#
发布于:2004-03-08 18:04
我用win2000sp4 + vc6 + win2000ddk编译楼主的驱动程序,出现很多错误,是怎么回事啊?
通讯与串口设备联网专家 东方讯科技 http://www.eastcent.com
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
44楼#
发布于:2004-03-08 20:49
1、CreateFile("\\\\.\\COM20",...)
2、的确正如老兄所说的那样。超级终端是轮训的ReadFile,所以驱动这里如果没有数据的话,pending这个read_irp,直到有数据到来。这里应该修改一下,如果当前没有数据,则返回0。只是我在早期的开发过程中遇到过如果直接返回0的话,超级终端一会儿就停止读取数据了。具体应该采用什么机制返回,老兄可以自己试一下。我目前公司有项目,没时间完善这个驱动了。过一段时间会再做的。

我安装了toaster( enum), 也按照步骤安装了驱动,而且用超级终端也可以在COM20, COM21 互发数据,为什么VC程序中用
CreateFile("COM20",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING, 0,NULL) 总是得到0xffff invalid handle ?

Error code=0x02, can not find file


补充:
重新启动机器,然后启动虚拟端口后再等一会,可以打开文件了,但是我发现当没有数据的时候,对真实端口读数据会返回 read bytes=0, 对虚拟端口读数据就会死等:
if( bIsEmpty ){
IoMarkIrpPending( Irp );
IoSetCancelRoutine( Irp, RequestCancelReadRoutine);
ExInterlockedInsertTailList( &deviceExtension->ReadIrpQueue, &Irp->Tail.Overlay.ListEntry, &deviceExtension->CancelSpinLock );
status = STATUS_PENDING;
return status;

不知道理解的是否正确,如有错误还请谅解~
是不是需要调整呢? 多谢!

[编辑 -  3/2/04 by  bakerj]
wangxiangsjz
驱动牛犊
驱动牛犊
  • 注册日期2002-12-26
  • 最后登录2004-05-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
45楼#
发布于:2004-03-15 07:19
搂主,不能下载了。请给我发一个好吗?
wangxiangsjz@sina.com
wangxiangsjz
驱动牛犊
驱动牛犊
  • 注册日期2002-12-26
  • 最后登录2004-05-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
46楼#
发布于:2004-03-15 07:30
可以下载了,谢谢!
NULL_Qian
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2005-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
47楼#
发布于:2004-03-24 11:09
各位大虾:
我在楼主这里下的虚拟串口驱动怎么不能在“设备管理器”里的“端口”里出现啊,要怎么样注册才能够出现啊?楼主的程序小弟看了,不过不是很懂,特来请教,楼主用的是IoRegisterDeviceInterface(..,GUID_CLASS_COMPORT,..) ; 啊,为什么不行呢?望高手赐教!
小弟感恩不尽!!
NULL_Qian
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2005-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
48楼#
发布于:2004-03-25 14:08
我又发现了新问题:
1:楼主在论坛提到的说要解决重启后,图标丢失的两种方法,我想采用第一种,也就是在控制面板里触发,但我现在不知道如何模拟一个新设备的信号给操作系统,让其自动安装我的驱动?
2:我使用的是DbgView,在调试运行test时,发现老是突然黑屏重启,跟进去才知道是执行到DeviceIoControl(...,IOCTL_CREATE_DOS_NAME,...) ;时出现的,而再换用SoftIce的DriverMonitor时,却没有发现这个问题。不知道是什么原因引起的?正在查找中......
3:我把inf修改后(Class=Ports ; ClassGuid={...}),在重启后,图标不丢失,能打开但运行test却连不上,原因是DeviceIoControl失败,导致屡次出现第二点出现的情况。
4:在连接成功的情况下,在超级终端能传输数据,但我用我原来使用的针对于实串口可用的程序来跑时,却收不到数据。

以上问题,迷惑中...,望各位高人赐教!
NULL_Qian
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2005-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
49楼#
发布于:2004-03-25 15:52
怎么没有人理我啊!
ygmlq
驱动牛犊
驱动牛犊
  • 注册日期2002-05-27
  • 最后登录2014-11-07
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望23点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
50楼#
发布于:2004-04-07 14:42
我安装了这个虚拟串口,有不明白的地方:是什么程序发出了
IRP_MJ_READ请求,是超级终端吗?
生死有命,富贵由天
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
51楼#
发布于:2004-04-07 14:48
当然是了。看你用什么win32的应用程序了。
ygmlq
驱动牛犊
驱动牛犊
  • 注册日期2002-05-27
  • 最后登录2014-11-07
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望23点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
52楼#
发布于:2004-04-07 15:12
我有问题!用超级终端打开我写的虚拟串口在DebugView里却没看到有IRP_MJ_READ的请求,敲入字符只有IRP_MJ_WRITE请求,为什么?
生死有命,富贵由天
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
53楼#
发布于:2004-04-07 15:29
我有问题!用超级终端打开我写的虚拟串口在DebugView里却没看到有IRP_MJ_READ的请求,敲入字符只有IRP_MJ_WRITE请求,为什么?


“用超级终端打开我写的虚拟串口在DebugView里...”,老兄写的虚拟串口出了问题,我还真不知道是怎么回事。

超级终端读写串口是阻赛式的。如果IRP_MJ_READ没有返回的话,肯定在那里等待。
ygmlq
驱动牛犊
驱动牛犊
  • 注册日期2002-05-27
  • 最后登录2014-11-07
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望23点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
54楼#
发布于:2004-04-07 15:47
谢谢回答,不过我发现,用超级终端打开虚拟串口,从来没有发出IRP_MJ_READ请求,因为我在IRP_MJ_READ请求的响应函数的开头加了DbgPrint,在DebugView里却没有输出打印的语句,怎么回事?
生死有命,富贵由天
jickknight
驱动牛犊
驱动牛犊
  • 注册日期2004-05-03
  • 最后登录2005-12-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
55楼#
发布于:2004-05-03 17:34
好帖子,顶一把!

菜鸟还有问题请教,
想把虚拟串口和TCP/IP联系起来,就是 把网口得(socket)跟虚拟串口驱动联系,怎么做!?

为了达到把网络的设备串口化!

是在串口驱动中做对socket的操作呢?还是另编一个服务器用来管理
虚拟串口和各个socket的通信?还是加一个filter驱动!?
请大侠指教

qq:6238204
Chasing my dreams!
jickknight
驱动牛犊
驱动牛犊
  • 注册日期2004-05-03
  • 最后登录2005-12-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
56楼#
发布于:2004-05-13 19:42
楼主,各位大虾,这个帖子,是我在这个版里面,让我收益最大的贴! 真的希望多点这样的帖子:)

我现在在这个基础上试着做添加TCP网络,部分,尽管坛子里好多人已经做过,可惜还是找不到,good sample,大家情况相似的,好好合作!
希望能早点做出来,为坛子做点更实惠的贡献!

干活喽!
Chasing my dreams!
jickknight
驱动牛犊
驱动牛犊
  • 注册日期2004-05-03
  • 最后登录2005-12-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
57楼#
发布于:2004-05-25 10:12
我在测试acidfish大侠的那个虚拟串口时,发现如果用大虾的驱动模拟出来的虚拟串口,经test.exe连接后 COM3<-->COM4 后
用串口助手去测试时,一选择COM3或 COM4,程序就死掉,怀疑虚拟串口对event相应方式的读写不支持! 我用超级终端测试是成功的

是不是因为驱动的IOcontrol写的不全,还是read write些的不全!?我想应该是read write吧
怎么克服呢!? 谢谢!

另外,通过IOcontrol,我想能把原来只能临近COM口相连的状况
改成,任意Com的连接吧,比如,我模拟了COM4 COM5 COM6 COM10 COM11 COM12 ,应该能把COM4与COM10 COM5与COM11 COM6与COM12
相连接吧!

如果这样的话,我就可以实现COM TO TCPD 的应用层连接了,大概的想法是 App --COM4----COM10---TCP -----NET
希望大家一起讨论
Chasing my dreams!
CYoung
驱动中牛
驱动中牛
  • 注册日期2003-06-10
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
58楼#
发布于:2004-05-25 10:22
为什么我把这个驱动装上去后,超级终端不能连接上去?我添加新硬件的时候添加了端口
答得好的话,请兄弟们加点分,那是对我的肯定
vennychang
驱动牛犊
驱动牛犊
  • 注册日期2003-02-07
  • 最后登录2005-03-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
59楼#
发布于:2004-05-25 10:24
我使用超级终端打开虚拟串口的时候发现:ReadFile是不断的发送下去的。当上一个ReadFile返回数据以后超级终端又调用了ReadFile来接收下一个数据。这当中并没有用到event。


我真的很想
游客

返回顶部