阅读:1536回复:7
我要创建Com几??
虚拟串口的时候,不能与系统原有的Com重复。
比如系统原有3个串口,那么我就创建com4。 那么这一步应该怎么做,用什么函数实现哪? 我现在的给分范围是0-23(不解),所以分数不多,还请大家多多帮忙! |
|
沙发#
发布于:2004-09-02 10:26
参考我以前写虚拟串口驱动程序。论坛上有。
主要做两点: 1、驱动里边生成一个符号连接\\.\\comX 2、注册表里边HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM 添加你的内核设备名和你的应用程序的设备名的关联。 呵呵,给分吧。 :D |
|
板凳#
发布于:2004-09-02 13:59
虚拟串口的时候,不能与系统原有的Com重复。 你可尝试从COM3开始,直到创建符号连接成功,当然,如果已经有COMx你一定要使用COMx也是可以,那就是先删除哪个已经存在的,然后在创建 |
|
|
地板#
发布于:2004-09-02 15:28
参考我以前写虚拟串口驱动程序。论坛上有。放心一定给,呵呵 是那个SimSerial例子吗(支持256个串口)?恕我愚钝,没有找到想要的东西,呵呵。 倒是在Test.cpp里面找到一个函数:SetupDiEnumDeviceInterfaces 但它只能枚举当前ClassGUID下的设备,如果系统中还有其他ClassGUID是不是就不对了? AllenZh:删除原有的comx好像不太恰当,不过这个方法应该是肯定能实现的。 找到一次就搞定的方法该有多好啊! 大家继续加油! |
|
地下室#
发布于:2004-09-07 16:11
[quote]参考我以前写虚拟串口驱动程序。论坛上有。放心一定给,呵呵 是那个SimSerial例子吗(支持256个串口)?恕我愚钝,没有找到想要的东西,呵呵。 倒是在Test.cpp里面找到一个函数:SetupDiEnumDeviceInterfaces 但它只能枚举当前ClassGUID下的设备,如果系统中还有其他ClassGUID是不是就不对了? AllenZh:删除原有的comx好像不太恰当,不过这个方法应该是肯定能实现的。 找到一次就搞定的方法该有多好啊! 大家继续加油! [/quote] 哈哈,老兄你可真是够愚钝的。 1、你想知道当前系统中有几个com,直接看HKEY_LOCAL_MACHINE HARDWARE DEVICEMAP SERIALCOMM 里边有几个就行了。 2、你若想创建一个com,直接看我的那个例子里边的代码就知道了。 这下说的还算清楚吧?如果还是搞不定的话,就趁早放弃吧。 :D |
|
5楼#
发布于:2004-09-07 17:51
删除的仅仅是个symbol有什么不恰当的?并且我以前反汇编过一个用得很广的产品就是这样做的,我不是告诉你需要保存吗,以便在你的symbol失效时恢复,这样当然是一次成功,难道还是多次? |
|
|
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可以使用。 |
|
|
7楼#
发布于:2004-09-10 10:38
感谢大家的帮忙!唉,让我做驱动有点赶鸭子上驾了^_^。不过,要放弃也绝不是现在!您说对不?呵呵
兑现承诺,给分! |
|