2012-01-07 120 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