我已在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 - 我沒有嘗試過這個我自己。
這表明'COM8 - 記錄爲「使用」' - 這可能是你的問題。 – 2012-01-07 20:36:05
@Jonathon萊因哈特你熟悉com0com? 「使用中」的消息,根據文件中的提示,意味着只有這些COM端口已被com0com驅動程序分配的,因此將不會被再次分配。如果操作系統認爲他們很忙,它會給我一個不同的錯誤。據我所知! – ravenspoint 2012-01-07 22:40:52
「使用中」通常是錯誤消息。很高興看到開放源代碼,你可以閱讀代碼,看看它實際上應該是什麼意思。 – 2012-01-07 22:51:16