В моем случае это был сервер Экспо, который иногда не ловит filesaves в Windows (вероятно), и это была seening старая версия компонента, который я попытался соединить (у меня не было экспорта там еще, вероятно). Пересохранение моего компонента, ничего действительно не касаясь устранило проблему.
Перезапуск сервер Экспо с убранным кэшем, вероятно, помог бы также.
EnumSerialPorts v1.20 , предложенный Ником D, использует девять различных методов для вывода списка последовательных портов! У нас определенно нет недостатка в выборе, хотя результаты кажутся разными.
Чтобы избавить других от неприятностей, я перечислю их здесь и укажу на их успех в обнаружении портов com0com
на моем ПК ( XP Pro SP2):
CreateFile («COM» + 1-> 255) по предложению Ваэля Даллула
Итерация по ключу реестра HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM
✔ Обнаружены порты com0com, потребовалось 0 мс. Очевидно, это то, что использует SysInternals PortMon .
Основываясь на этих результатах, я думаю, что метод WMI, вероятно, лучше всего подходит моим требованиям, поскольку он относительно быстр и в качестве бонуса также дает понятные имена (например, «Связь Порт (COM1) "," com0com - эмулятор последовательного порта ").
Похоже, это непростая задача.
Обратите внимание на это: EnumSerialPorts v1.20
вы можете сделать цикл, например, от 1 до 50 и попытаться открыть каждый порт. Если порт доступен, открытый будет работать. Если порт используется, вы получите сообщение об ошибке общего доступа. Если порт не установлен, вы получите сообщение об ошибке «файл не найден».
, чтобы открыть порт, используйте CreateFile API:
HANDLE Port = CreateFile(
"\\\\.\\COM1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
, затем проверьте результат.