WinAPI - CreateFile 失败,蓝牙 LE 服务的路径无效
WinAPI - CreateFile fails, invalid path for Bluetooth LE service
我有一个小程序可以枚举 BLE 设备及其服务。
使用 SetupDiGetDeviceProperty 我能够获得那些 BLE 设备的子服务,或者更确切地说是它们的设备实例路径,就像这里的这个:
BTHLEDevice{00001801-0000-1000-8000-00805f9b34fb}_dbc664e1783f&1b8d685b&c&0008
现在,如何将此路径与 CreateFile 一起使用?我尝试将“\\?\”放在开头,但这不起作用,CreateFile 失败并且 GetLastError returns 3,表示指定的路径不存在。
HANDLE handle = CreateFile(L"\\?\BTHLEDevice{00001801-0000-1000-8000-00805f9b34fb}_dbc664e1783f\9&1b8d685b&c&0008",
GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_WRITE | FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
NULL,
NULL);
if (handle == INVALID_HANDLE_VALUE) printf("Error: 0x%X\n", GetLastError());
事实证明 DEVPKEY_Device_Children 给出的路径不适用于 CreateFile。
我能够通过 GUID 枚举所有接口并输出它们的路径来验证这一点。问题已解决。
我有一个小程序可以枚举 BLE 设备及其服务。 使用 SetupDiGetDeviceProperty 我能够获得那些 BLE 设备的子服务,或者更确切地说是它们的设备实例路径,就像这里的这个:
BTHLEDevice{00001801-0000-1000-8000-00805f9b34fb}_dbc664e1783f&1b8d685b&c&0008
现在,如何将此路径与 CreateFile 一起使用?我尝试将“\\?\”放在开头,但这不起作用,CreateFile 失败并且 GetLastError returns 3,表示指定的路径不存在。
HANDLE handle = CreateFile(L"\\?\BTHLEDevice{00001801-0000-1000-8000-00805f9b34fb}_dbc664e1783f\9&1b8d685b&c&0008",
GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_WRITE | FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
NULL,
NULL);
if (handle == INVALID_HANDLE_VALUE) printf("Error: 0x%X\n", GetLastError());
事实证明 DEVPKEY_Device_Children 给出的路径不适用于 CreateFile。 我能够通过 GUID 枚举所有接口并输出它们的路径来验证这一点。问题已解决。