2012-01-07 236 views
11

我已在64位Windows 7机器上安装了com0com v2.2.2.0,显然已成功。com0com虚拟端口未找到

我运行命令行工具,就像这样:

command> install PortName=COM9 PortName=COM8 
     CNCA0 PortName=COM9 
     CNCB0 PortName=COM8 
ComDB: COM8 - logged as "in use" 
ComDB: COM9 - logged as "in use" 

command> busynames COM?* 
COM3 
COM4 
COM5 
COM6 
COM8 
COM9 
COMPOSITEBATTERY 

注:记录为“使用中”是不是一个错误的信息?

然后我尝试打开COM8这样

m_hIDComDev = CreateFileA(szCodedPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); 
if(m_hIDComDev == NULL || m_hIDComDev == INVALID_HANDLE_VALUE) { 

    wchar_t * lpMsgBuf; 
    DWORD dw = ::GetLastError(); 
    FormatMessage(
     FORMAT_MESSAGE_ALLOCATE_BUFFER | 
     FORMAT_MESSAGE_FROM_SYSTEM | 
     FORMAT_MESSAGE_IGNORE_INSERTS, 
     NULL, 
     dw, 
     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
     (LPTSTR) &lpMsgBuf, 
     0, NULL); 

    myErrorMsg = (char*)malloc(200); 
    sprintf(myErrorMsg,"Error creating connection %s (%s) %S", 
     szPort,szCodedPort,lpMsgBuf); 

这种失败

Error creating connection COM8 (COM8) The system cannot find the file specified. 

我曾经尝试都 “COM8” 和"\\.\COM8"

请注意,与CreateFileA完全相同的调用在“真实”COM端口上完美工作。

问:有人能告诉我问题是什么吗?

答:在Windows 7 64位上,您必须启用对未签名驱动程序的测试。

  • 运行命令提示符管理员。 (这是不够只是为了与管理员权限的帐户运行。对于如何做到这一点的详细信息,请参阅here。)

  • 键入命令bcdedit -set TESTSIGNING ON

  • 重启。 (Windows将在桌面右下角放置一个“测试模式”注释)

对于Windows 8,此方法无法令人满意或轻松使用。这里是some discussion的问题和解决方法。

另外,你可能想尝试signed version - 我没有尝试过这个我自己。

+1

这表明'COM8 - 记录为“使用”' - 这可能是你的问题。 – 2012-01-07 20:36:05

+0

@Jonathon莱因哈特你熟悉com0com? “使用中”的消息,根据文件中的提示,意味着只有这些COM端口已被com0com驱动程序分配的,因此将不会被再次分配。如果操作系统认为他们很忙,它会给我一个不同的错误。据我所知! – ravenspoint 2012-01-07 22:40:52

+1

“使用中”通常是错误消息。很高兴看到开放源代码,你可以阅读代码,看看它实际上应该是什么意思。 – 2012-01-07 22:51:16

回答

9

这里是我的观点:

  • 微软要求64-bit driverssigned
  • com0com.sys(64位)仅仅是无符号的内核模式驱动程序。

SoftWx已经写了一篇关于在64位Windows 7机器上安装它的有趣教程。你可以取它here

+0

谢谢。这使我指出了正确的方向。诀窍是从一个以管理员身份启动的命令提示符运行bcdedit。仅从具有管理员权限的帐户运行是不够的。 – ravenspoint 2012-01-09 14:13:31

+0

此解决方案的唯一问题是Windows必须处于测试模式才能使驱动程序正常工作。一旦你重新启动,你将无法再使用它。此解决方案不是永久性的,我不希望始终将我的计算机保持在驱动程序测试模式(这会造成安全风险)。 – DaAwesomeP 2015-01-19 17:42:13

18

如果有些人引用这一点,这个话题感兴趣的,在2.2.2.0 version of com0com是针对64位Windows签署。这消除了跳过将Windows放入“测试”模式的需要。

+0

感谢您的好消息。 – ravenspoint 2013-01-08 13:35:19

+2

3.0.0.0版**在Windows 7 64Bit上不** ** ** **。 2.2.2.0完美地工作。 – Zac 2014-11-12 10:40:11

+0

SourceForge上的3.0.0.0文件夹中没有Changes.txt。有谁知道在2.2.2.0和3.0.0.0之间有什么变化? – DaAwesomeP 2015-01-19 17:37:55