Виртуальный порт 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

Примечание: вход в систему как "используется" НЕ является сообщением об ошибке?

Затем я пытаюсь открыть 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: На 64-битной Windows 7 вы должны включить тестирование неподписанных драйверов.

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

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

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

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

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

3 ответа

Решение

Вот мои очки:

  • Microsoft требует 64-bit drivers быть signed,
  • com0com.sys (64bit) - это просто неподписанный драйвер режима ядра.

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

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

Это очень старый пост, но просто чтобы помочь, если кто-то наткнется на него, как это сделал я.

После Windows 10 версии 2004 вам может потребоваться отключить безопасную загрузку в BIOS.

Я получил подписанную версию 3.0 приложения от SourceForge, она отлично работала на моем одном ПК (Windows 10 Pro, версия 2004). Я только что установил приложение, и сразу были созданы две пары связанных портов.

На моем ноутбуке (Windows 10 Pro, версия 20H2) я не получил таких же результатов. COM-порты не были созданы, и в диспетчере устройств нельзя было настроить устройства. После изменения настроек BIOS я переустановил и все прошло гладко.

Ссылки для справки:

https://sourceforge.net/projects/com0com/

https://sourceforge.net/projects/signed-drivers/files/com0com/v3.0/

Чтобы ответить на @DaAwesomeP выше (у меня нет представителя, чтобы оставить его в комментариях), на GitHub https://github.com/paulakg4/com0com есть репо, где я могу увидеть файл changes.txt. Если сравнивать даты, то там вроде та же версия 3.0.

Другие вопросы по тегам