40楼#
发布于:2004-03-01 11:16
驱动中用C的比较多,C++的例子不多。大都是DS的。我C++用的不算太好。对项目的延续性、扩展性没有太多的经验。现在就用C++可能体现不出C++的优势。
版本管理软件倒是很想使用。目前也正在开始学习。:) btw:我接触过一些国外大公司的网卡驱动软件,一个项目,各个OS,各个接口都写在一起。像win98/2k/nt/xp,usb/pcmcia/pci/minipci等等都是放在代码中。全都靠条件编译来搞定。真是让人看的脑袋都大。 |
|
41楼#
发布于:2004-03-01 12:59
驱动中用C的比较多,C++的例子不多。大都是DS的。我C++用的不算太好。对项目的延续性、扩展性没有太多的经验。现在就用C++可能体现不出C++的优势。 DS 就不要用了.还不够他烦的. |
|
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] |
|
|
43楼#
发布于:2004-03-08 18:04
我用win2000sp4 + vc6 + win2000ddk编译楼主的驱动程序,出现很多错误,是怎么回事啊?
|
|
|
44楼#
发布于:2004-03-08 20:49
1、CreateFile("\\\\.\\COM20",...)
2、的确正如老兄所说的那样。超级终端是轮训的ReadFile,所以驱动这里如果没有数据的话,pending这个read_irp,直到有数据到来。这里应该修改一下,如果当前没有数据,则返回0。只是我在早期的开发过程中遇到过如果直接返回0的话,超级终端一会儿就停止读取数据了。具体应该采用什么机制返回,老兄可以自己试一下。我目前公司有项目,没时间完善这个驱动了。过一段时间会再做的。 我安装了toaster( enum), 也按照步骤安装了驱动,而且用超级终端也可以在COM20, COM21 互发数据,为什么VC程序中用 |
|
45楼#
发布于:2004-03-15 07:19
搂主,不能下载了。请给我发一个好吗?
wangxiangsjz@sina.com |
|
46楼#
发布于:2004-03-15 07:30
可以下载了,谢谢!
|
|
47楼#
发布于:2004-03-24 11:09
各位大虾:
我在楼主这里下的虚拟串口驱动怎么不能在“设备管理器”里的“端口”里出现啊,要怎么样注册才能够出现啊?楼主的程序小弟看了,不过不是很懂,特来请教,楼主用的是IoRegisterDeviceInterface(..,GUID_CLASS_COMPORT,..) ; 啊,为什么不行呢?望高手赐教! 小弟感恩不尽!! |
|
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:在连接成功的情况下,在超级终端能传输数据,但我用我原来使用的针对于实串口可用的程序来跑时,却收不到数据。 以上问题,迷惑中...,望各位高人赐教! |
|
49楼#
发布于:2004-03-25 15:52
怎么没有人理我啊!
|
|
50楼#
发布于:2004-04-07 14:42
我安装了这个虚拟串口,有不明白的地方:是什么程序发出了
IRP_MJ_READ请求,是超级终端吗? |
|
|
51楼#
发布于:2004-04-07 14:48
当然是了。看你用什么win32的应用程序了。
|
|
52楼#
发布于:2004-04-07 15:12
我有问题!用超级终端打开我写的虚拟串口在DebugView里却没看到有IRP_MJ_READ的请求,敲入字符只有IRP_MJ_WRITE请求,为什么?
|
|
|
53楼#
发布于:2004-04-07 15:29
我有问题!用超级终端打开我写的虚拟串口在DebugView里却没看到有IRP_MJ_READ的请求,敲入字符只有IRP_MJ_WRITE请求,为什么? “用超级终端打开我写的虚拟串口在DebugView里...”,老兄写的虚拟串口出了问题,我还真不知道是怎么回事。 超级终端读写串口是阻赛式的。如果IRP_MJ_READ没有返回的话,肯定在那里等待。 |
|
54楼#
发布于:2004-04-07 15:47
谢谢回答,不过我发现,用超级终端打开虚拟串口,从来没有发出IRP_MJ_READ请求,因为我在IRP_MJ_READ请求的响应函数的开头加了DbgPrint,在DebugView里却没有输出打印的语句,怎么回事?
|
|
|
55楼#
发布于:2004-05-03 17:34
好帖子,顶一把!
菜鸟还有问题请教, 想把虚拟串口和TCP/IP联系起来,就是 把网口得(socket)跟虚拟串口驱动联系,怎么做!? 为了达到把网络的设备串口化! 是在串口驱动中做对socket的操作呢?还是另编一个服务器用来管理 虚拟串口和各个socket的通信?还是加一个filter驱动!? 请大侠指教 qq:6238204 |
|
|
56楼#
发布于:2004-05-13 19:42
楼主,各位大虾,这个帖子,是我在这个版里面,让我收益最大的贴! 真的希望多点这样的帖子:)
我现在在这个基础上试着做添加TCP网络,部分,尽管坛子里好多人已经做过,可惜还是找不到,good sample,大家情况相似的,好好合作! 希望能早点做出来,为坛子做点更实惠的贡献! 干活喽! |
|
|
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 希望大家一起讨论 |
|
|
58楼#
发布于:2004-05-25 10:22
为什么我把这个驱动装上去后,超级终端不能连接上去?我添加新硬件的时候添加了端口
|
|
|
59楼#
发布于:2004-05-25 10:24
我使用超级终端打开虚拟串口的时候发现:ReadFile是不断的发送下去的。当上一个ReadFile返回数据以后超级终端又调用了ReadFile来接收下一个数据。这当中并没有用到event。 我真的很想 |
|