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 |
|
---|