Ошибка при открытии COM-порта, в win95/98

Тема в разделе "WASM.WIN32", создана пользователем Tohey, 2 июл 2007.

  1. Tohey

    Tohey New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2006
    Сообщения:
    31
    Подскажите, почему при открытии COM-портов, CreateFile возвращает INVALID_HANDLE_VALUE? Эта ошибка в win95,win98. В XP всё ОК. GetLastError возвращает 57H...
     
  2. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Попробуй так:
    Код (Text):
    1.     invoke CreateFile,ADDR szCOMx,\
    2.         GENERIC_READ or GENERIC_WRITE ,\
    3.         NULL,NULL,OPEN_EXISTING,\
    4.         FILE_FLAG_OVERLAPPED,\
    5.         NULL
    Работало на 98, 2000, ХР.
     
  3. tender_swallow

    tender_swallow New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    45
    #define ERROR_INVALID_PARAMETER 87
     
  4. Tohey

    Tohey New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2006
    Сообщения:
    31
    Нашел я INVALID_PARAMETER. Такое не проходит в win95\win98 - invoke CreateFile,"COM1"..., указал порт через ADDR как в примере и порт открылся :)
     
  5. Турецкий

    Турецкий New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    10
    Мда... Каким образом в XP заработало?
     
  6. tinok

    tinok New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2007
    Сообщения:
    26
    Может, не "COM1", а что-то типа "\\?\COM1" ?
     
  7. Tohey

    Tohey New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2006
    Сообщения:
    31
    Подскажите пожалуйста API функцию, которая возвращает количество и номера COM портов в системе.
     
  8. AndNot

    AndNot New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2007
    Сообщения:
    49
    Можно через реестр: "HKEY_LOCAL_MACHINE\hardware\devicemap\serialcomm"
    Или можешь через CreateFile, опрашивая все доступные номера. Только тогда нужно учесть, что INVALID_HANDLE еще не значит, что порта нет, он может быть просто занят.
     
  9. Tohey

    Tohey New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2006
    Сообщения:
    31
    Да, через реестр меня устраивает. А в win98 такой же реестр?