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