【发布时间】:2011-07-27 20:42:28
【问题描述】:
我维护了一个应用程序,该应用程序向用户提供主机上可用串行端口设备的列表。此应用程序使用 GetDefaultCommConfig() 函数来验证其串行端口名称列表中的设备是否有效。我收到通知说我的应用程序不适用于蓝牙串行端口。今天调试这个问题的时候,发现用蓝牙串口名调用GetDefaultCommConfig()函数没有返回成功的值。 GetLastError() 函数在这些情况下返回 29(无效参数)。这个问题有解决办法吗?
【问题讨论】:
-
它是什么蓝牙堆栈?微软自己的还是 Widcomm/Broadcom、BlueSoleil 还是东芝?还是全部? :-,(
-
这是 Microsoft 堆栈,我正在使用串行通信 API。
-
是的,我在这里也看到了这种行为。 (例如,该 API 可以使用 Widcomm 端口)。例如,我使用 WMI 或查看注册表以获取端口名称,例如32feet.codeplex.com/…
-
我使用注册表来获取端口名称列表,但该方法可能会导致当前无法使用的端口名称(例如已拔出的 USB 串行端口)。我使用 GetDefaultCommConfig() 来忽略任何看似无效的名称。对于蓝牙映射的串行端口,此功能似乎总是失败。
-
我想可以查看 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM,如果名称是 \Device\BtModemNNN 那么它是 MSFT 蓝牙堆栈,不要使用 GetDefaultCommConfig() ...
标签: winapi bluetooth serial-port