我已经在64位Windows 7机器上安装了com0com v2.2.2.0,显然是成功的。
我运行命令实用程序,如下所示:
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 - 我自己没试过。
答案 0 :(得分:18)
如果有人引用此内容并对此主题感兴趣,则会为64位Windows签署2.2.2.0 version of com0com。这样就无需跳过将Windows置入“测试”模式的环节。
答案 1 :(得分:9)