kb219
驱动牛犊
驱动牛犊
  • 注册日期2004-08-17
  • 最后登录2008-06-19
  • 粉丝0
  • 关注0
  • 积分208分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
阅读:1536回复:7

我要创建Com几??

楼主#
更多 发布于:2004-09-01 09:17
虚拟串口的时候,不能与系统原有的Com重复。

比如系统原有3个串口,那么我就创建com4。

那么这一步应该怎么做,用什么函数实现哪?

我现在的给分范围是0-23(不解),所以分数不多,还请大家多多帮忙!
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-02 10:26
参考我以前写虚拟串口驱动程序。论坛上有。
主要做两点:
1、驱动里边生成一个符号连接\\.\\comX
2、注册表里边HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
添加你的内核设备名和你的应用程序的设备名的关联。

呵呵,给分吧。 :D
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-02 13:59
虚拟串口的时候,不能与系统原有的Com重复。

比如系统原有3个串口,那么我就创建com4。

那么这一步应该怎么做,用什么函数实现哪?

我现在的给分范围是0-23(不解),所以分数不多,还请大家多多帮忙!

你可尝试从COM3开始,直到创建符号连接成功,当然,如果已经有COMx你一定要使用COMx也是可以,那就是先删除哪个已经存在的,然后在创建
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
kb219
驱动牛犊
驱动牛犊
  • 注册日期2004-08-17
  • 最后登录2008-06-19
  • 粉丝0
  • 关注0
  • 积分208分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-02 15:28
参考我以前写虚拟串口驱动程序。论坛上有。
主要做两点:
1、驱动里边生成一个符号连接\.\comX
2、注册表里边HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPSERIALCOMM
添加你的内核设备名和你的应用程序的设备名的关联。

呵呵,给分吧。 :D
放心一定给,呵呵

是那个SimSerial例子吗(支持256个串口)?恕我愚钝,没有找到想要的东西,呵呵。

倒是在Test.cpp里面找到一个函数:SetupDiEnumDeviceInterfaces 但它只能枚举当前ClassGUID下的设备,如果系统中还有其他ClassGUID是不是就不对了?

AllenZh:删除原有的comx好像不太恰当,不过这个方法应该是肯定能实现的。
找到一次就搞定的方法该有多好啊!

大家继续加油!
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-07 16:11
[quote]参考我以前写虚拟串口驱动程序。论坛上有。
主要做两点:
1、驱动里边生成一个符号连接.comX
2、注册表里边HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPSERIALCOMM
添加你的内核设备名和你的应用程序的设备名的关联。

呵呵,给分吧。 :D
放心一定给,呵呵

是那个SimSerial例子吗(支持256个串口)?恕我愚钝,没有找到想要的东西,呵呵。

倒是在Test.cpp里面找到一个函数:SetupDiEnumDeviceInterfaces 但它只能枚举当前ClassGUID下的设备,如果系统中还有其他ClassGUID是不是就不对了?

AllenZh:删除原有的comx好像不太恰当,不过这个方法应该是肯定能实现的。
找到一次就搞定的方法该有多好啊!

大家继续加油! [/quote]

哈哈,老兄你可真是够愚钝的。

1、你想知道当前系统中有几个com,直接看HKEY_LOCAL_MACHINE HARDWARE DEVICEMAP SERIALCOMM
里边有几个就行了。
2、你若想创建一个com,直接看我的那个例子里边的代码就知道了。

这下说的还算清楚吧?如果还是搞不定的话,就趁早放弃吧。 :D
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-07 17:51

AllenZh:删除原有的comx好像不太恰当,不过这个方法应该是肯定能实现的。
找到一次就搞定的方法该有多好啊!

大家继续加油!

删除的仅仅是个symbol有什么不恰当的?并且我以前反汇编过一个用得很广的产品就是这样做的,我不是告诉你需要保存吗,以便在你的symbol失效时恢复,这样当然是一次成功,难道还是多次?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
6楼#
发布于:2004-09-08 11:58
查询
HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM
是一种方法。

另一种方法是在注册表键  HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\COM Name Arbiter  下有键值:ComDB。一个256bit的值,每一位对应一个COM port,相应位为1,表示该Port被占用,否则可以使用。
标准串口驱动通过它来判断哪一个Port可以使用。
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
kb219
驱动牛犊
驱动牛犊
  • 注册日期2004-08-17
  • 最后登录2008-06-19
  • 粉丝0
  • 关注0
  • 积分208分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-10 10:38
感谢大家的帮忙!唉,让我做驱动有点赶鸭子上驾了^_^。不过,要放弃也绝不是现在!您说对不?呵呵

兑现承诺,给分!
游客

返回顶部