Я поддерживаю приложение, которое использует функцию Win32 EnumPorts (), чтобы помочь определить набор последовательных портов, установленных на компьютере. На некоторых компьютерах я видел случаи, когда вызов для получения этой информации не удался с кодом GetLastError () 1722 (сервер RPC недоступен). Я предполагаю, что это как-то связано с настройками реестра или отключением требуемой службы, но мой поиск до сих пор был довольно бесплодным. Кто-нибудь еще сталкивался с этой проблемой?
В ответ на комментарии Euro Micelli. Я специально пытаюсь заполнить список выбора, который позволит пользователю выбрать доступный список выбора. Для начала я полагался исключительно на EnumPorts (), чтобы предоставить мне список потенциальных имен последовательных портов. Он оказался ненадежным, однако в нескольких смыслах: он не всегда предоставлял полный набор имен портов, и, как я недавно видел, он может вообще не функционировать, когда «служба RPC недоступна». Зачем нужен RPC, чтобы узнать, какие порты доступны на локальной машине, совершенно за мной, но это так. Эта последняя проблема была последней каплей. Поскольку я полностью полагаюсь на предоставленный список имен, я фильтрую эти имена, используя функцию GetDefaultCommConfig (), чтобы определить точную природу каждого из имен, которые я придумал.
По моему опыту, список имен, предоставленных ранее упомянутым разделом реестра, был самым надежным способом получения имен портов. На самом деле, я вижу, как обновляется ключ, когда я отключаю драйверы портов в диспетчере устройств. При нормальном опыте я бы согласился с оценкой, что полагаться на тот или иной ключ чревато опасностью. Однако в этом случае M $ никогда не предоставлял достойного механизма для оценки имен доступных портов.
Я должен указать, что я уже заменил вызов EnumPorts () алгоритмом, который сканирует раздел реестра: HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM для имен последовательных портов. Это должно решить проблему после выпуска моего программного обеспечения. Мне нужны указатели, которые могут быть предоставлены клиентам, использующим выпущенный пакет в настоящее время.