Не удалось найти виртуальный порт com0com

Я установил, очевидно, успешно com0com v2.2.2.0 на 64-битную машину Windows 7.

Я запускаю служебную программу, например:

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

Примечание: зарегистрированный как "in use" НЕ является сообщением об ошибке?

Затем я пытаюсь открыть 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-порту.

В: Может ли кто-нибудь сказать мне, в чем проблема?

A: В Windows 7 64 бит вам нужно включить тестирование неподписанных драйверов.

  • Запустите командную строку как администратор. (Недостаточно просто запустить учетную запись с правами администратора. Подробнее см. здесь.

  • Введите команду bcdedit -set TESTSIGNING ON

  • перезагрузка

    . (Windows будет помещать "тестовый режим" в нижнем правом углу рабочего стола)

В Windows 8 этот метод не работает удовлетворительно или легко. Ниже приведено обсуждение и обходные пути.

В качестве альтернативы вы можете попробовать подписанную версию - я НЕ пробовал это сам.

Ответ 1

Вот мои пункты:

  • Microsoft требует, чтобы 64-bit drivers был signed.
  • com0com.sys (64 бит) - это простой драйвер без знака.

SoftWx написал интересный учебник по установке на 64-битной машине Windows 7. Вы можете получить здесь.

Ответ 2

Если кто-то ссылается на это и интересуется этой темой, версия 2.2.0.0 com0com подписана для 64-битной Windows. Это устраняет необходимость перепрыгивать через обручи для установки Windows в "тестовом" режиме.