bluetoothapis.h (11151B) - Raw
1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _INC_BLUETOOTHAPIS 7 #define _INC_BLUETOOTHAPIS 8 9 #include <_mingw.h> 10 #include <bthdef.h> 11 #include <bthsdpdef.h> 12 13 #define BLUETOOTH_MAX_NAME_SIZE 248 14 #define BLUETOOTH_MAX_PASSKEY_SIZE 16 15 #define BLUETOOTH_MAX_PASSKEY_BUFFER_SIZE (BLUETOOTH_MAX_PASSKEY_SIZE + 1) 16 #define BLUETOOTH_MAX_SERVICE_NAME_SIZE 256 17 #define BLUETOOTH_DEVICE_NAME_SIZE 256 18 19 #define BLUETOOTH_SERVICE_DISABLE 0x00 20 #define BLUETOOTH_SERVICE_ENABLE 0x01 21 #define BLUETOOTH_SERVICE_MASK (BLUETOOTH_SERVICE_DISABLE | BLUETOOTH_SERVICE_ENABLE) 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 typedef LPVOID HBLUETOOTH_DEVICE_FIND; 28 typedef LPVOID HBLUETOOTH_RADIO_FIND; 29 typedef LPVOID HBLUETOOTH_AUTHENTICATION_REGISTRATION; 30 typedef LPVOID HBLUETOOTH_CONTAINER_ELEMENT; 31 32 typedef struct _BLUETOOTH_ADDRESS { 33 __C89_NAMELESS union { 34 BTH_ADDR ullLong; 35 BYTE rgBytes[6]; 36 }; 37 } BLUETOOTH_ADDRESS_STRUCT; 38 39 #define BLUETOOTH_ADDRESS BLUETOOTH_ADDRESS_STRUCT 40 41 #define BLUETOOTH_NULL_ADDRESS ((ULONGLONG)0x0) 42 43 typedef struct _BLUETOOTH_COD_PAIRS { 44 ULONG ulCODMask; 45 LPCWSTR pcszDescription; 46 } BLUETOOTH_COD_PAIRS; 47 48 typedef struct _BLUETOOTH_DEVICE_INFO { 49 DWORD dwSize; 50 BLUETOOTH_ADDRESS Address; 51 ULONG ulClassofDevice; 52 WINBOOL fConnected; 53 WINBOOL fRemembered; 54 WINBOOL fAuthenticated; 55 SYSTEMTIME stLastSeen; 56 SYSTEMTIME stLastUsed; 57 WCHAR szName[BLUETOOTH_MAX_NAME_SIZE]; 58 } BLUETOOTH_DEVICE_INFO_STRUCT; 59 60 #define BLUETOOTH_DEVICE_INFO BLUETOOTH_DEVICE_INFO_STRUCT 61 62 typedef BLUETOOTH_DEVICE_INFO *PBLUETOOTH_DEVICE_INFO; 63 64 typedef struct _BLUETOOTH_DEVICE_SEARCH_PARAMS { 65 DWORD dwSize; 66 WINBOOL fReturnAuthenticated; 67 WINBOOL fReturnRemembered; 68 WINBOOL fReturnUnknown; 69 WINBOOL fReturnConnected; 70 WINBOOL fIssueInquiry; 71 UCHAR cTimeoutMultiplier; 72 HANDLE hRadio; 73 } BLUETOOTH_DEVICE_SEARCH_PARAMS; 74 75 typedef struct _BLUETOOTH_FIND_RADIO_PARAMS { 76 DWORD dwSize; 77 } BLUETOOTH_FIND_RADIO_PARAMS; 78 79 typedef struct _BLUETOOTH_RADIO_INFO { 80 DWORD dwSize; 81 BLUETOOTH_ADDRESS address; 82 WCHAR szName[BLUETOOTH_MAX_NAME_SIZE]; 83 ULONG ulClassofDevice; 84 USHORT lmpSubversion; 85 USHORT manufacturer; 86 } BLUETOOTH_RADIO_INFO, *PBLUETOOTH_RADIO_INFO; 87 88 typedef enum _BLUETOOTH_AUTHENTICATION_METHOD { 89 BLUETOOTH_AUTHENTICATION_METHOD_LEGACY = 0x1, 90 BLUETOOTH_AUTHENTICATION_METHOD_OOB, 91 BLUETOOTH_AUTHENTICATION_METHOD_NUMERIC_COMPARISON, 92 BLUETOOTH_AUTHENTICATION_METHOD_PASSKEY_NOTIFICATION, 93 BLUETOOTH_AUTHENTICATION_METHOD_PASSKEY 94 } BLUETOOTH_AUTHENTICATION_METHOD, *PBLUETOOTH_AUTHENTICATION_METHOD; 95 96 typedef enum _BLUETOOTH_IO_CAPABILITY { 97 BLUETOOTH_IO_CAPABILITY_DISPLAYONLY = 0x00, 98 BLUETOOTH_IO_CAPABILITY_DISPLAYYESNO = 0x01, 99 BLUETOOTH_IO_CAPABILITY_KEYBOARDONLY = 0x02, 100 BLUETOOTH_IO_CAPABILITY_NOINPUTNOOUTPUT = 0x03, 101 BLUETOOTH_IO_CAPABILITY_UNDEFINED = 0xff 102 } BLUETOOTH_IO_CAPABILITY; 103 104 typedef enum _BLUETOOTH_AUTHENTICATION_REQUIREMENTS { 105 BLUETOOTH_MITM_ProtectionNotRequired = 0x0, 106 BLUETOOTH_MITM_ProtectionRequired = 0x1, 107 BLUETOOTH_MITM_ProtectionNotRequiredBonding = 0x2, 108 BLUETOOTH_MITM_ProtectionRequiredBonding = 0x3, 109 BLUETOOTH_MITM_ProtectionNotRequiredGeneralBonding = 0x4, 110 BLUETOOTH_MITM_ProtectionRequiredGeneralBonding = 0x5, 111 BLUETOOTH_MITM_ProtectionNotDefined = 0xff 112 } BLUETOOTH_AUTHENTICATION_REQUIREMENTS; 113 114 typedef struct _BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS { 115 BLUETOOTH_DEVICE_INFO deviceInfo; 116 BLUETOOTH_AUTHENTICATION_METHOD authenticationMethod; 117 BLUETOOTH_IO_CAPABILITY ioCapability; 118 BLUETOOTH_AUTHENTICATION_REQUIREMENTS authenticationRequirements; 119 __C89_NAMELESS union { 120 ULONG Numeric_Value; 121 ULONG Passkey; 122 } ; 123 } BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS, *PBLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS; 124 125 typedef struct _BLUETOOTH_LOCAL_SERVICE_INFO { 126 WINBOOL Enabled; 127 BLUETOOTH_ADDRESS btAddr; 128 WCHAR szName[BLUETOOTH_MAX_SERVICE_NAME_SIZE]; 129 WCHAR szDeviceString[BLUETOOTH_DEVICE_NAME_SIZE]; 130 } BLUETOOTH_LOCAL_SERVICE_INFO_STRUCT; 131 132 #define BLUETOOTH_LOCAL_SERVICE_INFO BLUETOOTH_LOCAL_SERVICE_INFO_STRUCT 133 134 typedef BLUETOOTH_LOCAL_SERVICE_INFO *PBLUETOOTH_LOCAL_SERVICE_INFO; 135 136 #define BTH_MAX_PIN_SIZE 16 137 typedef struct _BLUETOOTH_PIN_INFO { 138 UCHAR pin[BTH_MAX_PIN_SIZE]; 139 UCHAR pinLength; 140 } BLUETOOTH_PIN_INFO, *PBLUETOOTH_PIN_INFO; 141 142 typedef struct _BLUETOOTH_OOB_DATA_INFO { 143 UCHAR C[16]; 144 UCHAR R[16]; 145 } BLUETOOTH_OOB_DATA_INFO, *PBLUETOOTH_OOB_DATA_INFO; 146 147 typedef struct _BLUETOOTH_NUMERIC_COMPARISON_INFO { 148 ULONG NumericValue; 149 } BLUETOOTH_NUMERIC_COMPARISON_INFO, *PBLUETOOTH_NUMERIC_COMPARISON_INFO; 150 151 typedef struct _BLUETOOTH_PASSKEY_INFO { 152 ULONG passkey; 153 } BLUETOOTH_PASSKEY_INFO, *PBLUETOOTH_PASSKEY_INFO; 154 155 typedef struct _BLUETOOTH_AUTHENTICATE_RESPONSE { 156 BLUETOOTH_ADDRESS bthAddressRemote; 157 BLUETOOTH_AUTHENTICATION_METHOD authMethod; 158 __C89_NAMELESS union { 159 BLUETOOTH_PIN_INFO pinInfo; 160 BLUETOOTH_OOB_DATA_INFO oobInfo; 161 BLUETOOTH_NUMERIC_COMPARISON_INFO numericCompInfo; 162 BLUETOOTH_PASSKEY_INFO passkeyInfo; 163 }; 164 UCHAR negativeResponse; 165 } BLUETOOTH_AUTHENTICATE_RESPONSE, *PBLUETOOTH_AUTHENTICATE_RESPONSE; 166 167 typedef WINBOOL (CALLBACK *PFN_DEVICE_CALLBACK)(LPVOID pvParam,const BLUETOOTH_DEVICE_INFO *pDevice); 168 typedef WINBOOL (CALLBACK *PFN_AUTHENTICATION_CALLBACK_EX)(LPVOID pvParam,PBLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS pAuthCallbackParams); 169 typedef WINBOOL (CALLBACK *PFN_AUTHENTICATION_CALLBACK)(LPVOID pvParam,PBLUETOOTH_DEVICE_INFO pDevice); 170 typedef WINBOOL (CALLBACK *PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK)(ULONG uAttribId,LPBYTE pValueStream,ULONG cbStreamSize,LPVOID pvParam); 171 172 typedef struct _BLUETOOTH_SELECT_DEVICE_PARAMS { 173 DWORD dwSize; 174 ULONG cNumOfClasses; 175 BLUETOOTH_COD_PAIRS *prgClassOfDevices; 176 LPWSTR pszInfo; 177 HWND hwndParent; 178 WINBOOL fForceAuthentication; 179 WINBOOL fShowAuthenticated; 180 WINBOOL fShowRemembered; 181 WINBOOL fShowUnknown; 182 WINBOOL fAddNewDeviceWizard; 183 WINBOOL fSkipServicesPage; 184 PFN_DEVICE_CALLBACK pfnDeviceCallback; 185 LPVOID pvParam; 186 DWORD cNumDevices; 187 PBLUETOOTH_DEVICE_INFO pDevices; 188 } BLUETOOTH_SELECT_DEVICE_PARAMS; 189 190 DWORD WINAPI BluetoothAuthenticateMultipleDevices( 191 HWND hwndParent, 192 HANDLE hRadio, 193 DWORD cDevices, 194 BLUETOOTH_DEVICE_INFO *pbtdi 195 ); 196 197 DWORD WINAPI BluetoothAuthenticateDevice( 198 HWND hwndParent, 199 HANDLE hRadio, 200 BLUETOOTH_DEVICE_INFO *pbtbi, 201 PWSTR pszPasskey, 202 ULONG ulPasskeyLength 203 ); 204 205 DWORD WINAPI BluetoothAuthenticateDeviceEx( 206 HWND hwndParentIn, 207 HANDLE hRadioIn, 208 BLUETOOTH_DEVICE_INFO *pbtdiInout, 209 PBLUETOOTH_OOB_DATA_INFO pbtOobData, 210 AUTHENTICATION_REQUIREMENTS authenticationRequirement 211 ); 212 213 WINBOOL WINAPI BluetoothDisplayDeviceProperties( 214 HWND hwndParent, 215 BLUETOOTH_DEVICE_INFO *pbtdi 216 ); 217 218 WINBOOL WINAPI BluetoothEnableDiscovery( 219 HANDLE hRadio, 220 WINBOOL fEnabled 221 ); 222 223 WINBOOL WINAPI BluetoothEnableIncomingConnections( 224 HANDLE hRadio, 225 WINBOOL fEnabled 226 ); 227 228 DWORD WINAPI BluetoothEnumerateInstalledServices( 229 HANDLE hRadio, 230 const BLUETOOTH_DEVICE_INFO *pbtdi, 231 DWORD *pcServices, 232 GUID *pGuidServices 233 ); 234 235 WINBOOL WINAPI BluetoothFindDeviceClose( 236 HBLUETOOTH_DEVICE_FIND hFind 237 ); 238 239 HBLUETOOTH_DEVICE_FIND WINAPI BluetoothFindFirstDevice( 240 const BLUETOOTH_DEVICE_SEARCH_PARAMS *pbtsp, 241 BLUETOOTH_DEVICE_INFO *pbtdi 242 ); 243 244 HBLUETOOTH_RADIO_FIND WINAPI BluetoothFindFirstRadio( 245 const BLUETOOTH_FIND_RADIO_PARAMS *pbtfrp, 246 HANDLE *phRadio 247 ); 248 249 WINBOOL WINAPI BluetoothFindNextDevice( 250 HBLUETOOTH_DEVICE_FIND hFind, 251 BLUETOOTH_DEVICE_INFO *pbtdi 252 ); 253 254 WINBOOL WINAPI BluetoothFindNextRadio( 255 HBLUETOOTH_RADIO_FIND hFind, 256 HANDLE *phRadio 257 ); 258 259 WINBOOL WINAPI BluetoothFindRadioClose( 260 HBLUETOOTH_RADIO_FIND hFind 261 ); 262 263 DWORD WINAPI BluetoothGetDeviceInfo( 264 HANDLE hRadio, 265 BLUETOOTH_DEVICE_INFO *pbtdi 266 ); 267 268 DWORD WINAPI BluetoothGetRadioInfo( 269 HANDLE hRadio, 270 PBLUETOOTH_RADIO_INFO pRadioInfo 271 ); 272 273 WINBOOL WINAPI BluetoothIsDiscoverable( 274 HANDLE hRadio 275 ); 276 277 WINBOOL WINAPI BluetoothIsConnectable( 278 HANDLE hRadio 279 ); 280 281 WINBOOL WINAPI BluetoothIsVersionAvailable( 282 UCHAR MajorVersion, 283 UCHAR MinorVersion 284 ); 285 286 DWORD WINAPI BluetoothRegisterForAuthentication( 287 const BLUETOOTH_DEVICE_INFO *pbtdi, 288 HBLUETOOTH_AUTHENTICATION_REGISTRATION *phRegHandle, 289 PFN_AUTHENTICATION_CALLBACK pfnCallback, 290 PVOID pvParam 291 ); 292 293 DWORD WINAPI BluetoothRegisterForAuthenticationEx( 294 const BLUETOOTH_DEVICE_INFO *pbtdiln, 295 HBLUETOOTH_AUTHENTICATION_REGISTRATION *phRegHandleOut, 296 PFN_AUTHENTICATION_CALLBACK_EX pfnCallbackIn, 297 PVOID pvParam 298 ); 299 300 DWORD WINAPI BluetoothRemoveDevice( 301 const BLUETOOTH_ADDRESS *pAddress 302 ); 303 304 WINBOOL WINAPI BluetoothSdpEnumAttributes( 305 LPBYTE pSDPStream, 306 ULONG cbStreamSize, 307 PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK pfnCallback, 308 LPVOID pvParam 309 ); 310 311 DWORD WINAPI BluetoothSdpGetAttributeValue( 312 LPBYTE pRecordStream, 313 ULONG cbRecordLength, 314 USHORT usAttributeId, 315 PSDP_ELEMENT_DATA pAttributeData 316 ); 317 318 DWORD WINAPI BluetoothSdpGetContainerElementData( 319 LPBYTE pContainerStream, 320 ULONG cbContainerLength, 321 HBLUETOOTH_CONTAINER_ELEMENT *pElement, 322 PSDP_ELEMENT_DATA pData 323 ); 324 325 DWORD BluetoothSdpGetElementData( 326 LPBYTE pSdpStream, 327 ULONG cbSpdStreamLength, 328 PSDP_ELEMENT_DATA pData 329 ); 330 331 DWORD BluetoothSdpGetString( 332 LPBYTE pRecordStream, 333 ULONG cbRecordLength, 334 const PSDP_STRING_TYPE_DATA pStringData, 335 USHORT usStringOffset, 336 PWCHAR pszString, 337 PULONG pcchStringLength 338 ); 339 340 WINBOOL WINAPI BluetoothSelectDevices( 341 BLUETOOTH_SELECT_DEVICE_PARAMS *pbtsdp 342 ); 343 344 WINBOOL WINAPI BluetoothSelectDevicesFree( 345 BLUETOOTH_SELECT_DEVICE_PARAMS *pbtsdp 346 ); 347 348 DWORD WINAPI BluetoothSendAuthenticationResponse( 349 HANDLE hRadio, 350 const BLUETOOTH_DEVICE_INFO *pbtdi, 351 LPWSTR pszPasskey 352 ); 353 354 DWORD WINAPI BluetoothSendAuthenticationResponseEx( 355 HANDLE hRadioIn, 356 PBLUETOOTH_AUTHENTICATE_RESPONSE pauthResponse 357 ); 358 359 DWORD WINAPI BluetoothSetLocalServiceInfo( 360 HANDLE hRadioIn, 361 const GUID *pClassGuid, 362 ULONG ulInstance, 363 const BLUETOOTH_LOCAL_SERVICE_INFO *pServiceInfoIn 364 ); 365 366 DWORD WINAPI BluetoothSetServiceState( 367 HANDLE hRadio, 368 const BLUETOOTH_DEVICE_INFO *pbtdi, 369 const GUID *pGuidService, 370 DWORD dwServiceFlags 371 ); 372 373 WINBOOL WINAPI BluetoothUnregisterAuthentication( 374 HBLUETOOTH_AUTHENTICATION_REGISTRATION hRegHandle 375 ); 376 377 DWORD WINAPI BluetoothUpdateDeviceRecord( 378 const BLUETOOTH_DEVICE_INFO *pbtdi 379 ); 380 381 #ifdef __cplusplus 382 } 383 #endif 384 385 #endif /*_INC_BLUETOOTHAPIS*/ 386