私は64ビットのWindows7マシンにcom0comv2.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ポートで完全に機能することに注意してください。
Q:誰かが問題を教えてもらえますか?
A:Windows 7 64ビットでは、署名されていないドライバーのテストを有効にする必要があります。
管理者としてコマンドプロンプトを実行します。(管理者権限を持つアカウントから実行するだけでは不十分です。これを行う方法の詳細については、ここを参照してください。)
コマンドを入力します
bcdedit -set TESTSIGNING ON
リブート。(Windowsは、デスクトップの右下に「テストモード」のメモを配置します)
Windows 8の場合、この方法は十分または簡単には機能しません。ここでは、問題と回避策について説明します。
あるいは、署名されたバージョンを試してみることもできます-私はこれを自分で試していません。