source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/bluetoothapis.h@ 1167

Last change on this file since 1167 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 9.8 KB
Line 
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
16extern "C" {
17#endif
18
19typedef LPVOID HBLUETOOTH_DEVICE_FIND;
20typedef LPVOID HBLUETOOTH_RADIO_FIND;
21typedef LPVOID HBLUETOOTH_AUTHENTICATION_REGISTRATION;
22typedef LPVOID HBLUETOOTH_CONTAINER_ELEMENT;
23
24typedef struct _BLUETOOTH_ADDRESS {
25 __C89_NAMELESS union {
26 BTH_ADDR ullLong;
27 BYTE rgBytes[6];
28 };
29} BLUETOOTH_ADDRESS;
30
31typedef struct _BLUETOOTH_COD_PAIRS {
32 ULONG ulCODMask;
33 LPCWSTR pcszDescription;
34} BLUETOOTH_COD_PAIRS;
35
36typedef 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
48typedef 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
59typedef struct _BLUETOOTH_FIND_RADIO_PARAMS {
60 DWORD dwSize;
61} BLUETOOTH_FIND_RADIO_PARAMS;
62
63typedef 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
72typedef 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
80typedef 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
88typedef 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
98typedef 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
111typedef 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
119typedef struct _BLUETOOTH_PIN_INFO {
120 UCHAR pin[BTH_MAX_PIN_SIZE];
121 UCHAR pinLength;
122} BLUETOOTH_PIN_INFO, *PBLUETOOTH_PIN_INFO;
123
124typedef struct _BLUETOOTH_OOB_DATA_INFO {
125 UCHAR C[16];
126 UCHAR R[16];
127} BLUETOOTH_OOB_DATA_INFO, *PBLUETOOTH_OOB_DATA_INFO;
128
129typedef struct _BLUETOOTH_NUMERIC_COMPARISON_INFO {
130 ULONG NumericValue;
131} BLUETOOTH_NUMERIC_COMPARISON_INFO, *PBLUETOOTH_NUMERIC_COMPARISON_INFO;
132
133typedef struct _BLUETOOTH_PASSKEY_INFO {
134 ULONG passkey;
135} BLUETOOTH_PASSKEY_INFO, *PBLUETOOTH_PASSKEY_INFO;
136
137typedef 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
149typedef WINBOOL (*PFN_DEVICE_CALLBACK)(LPVOID pvParam,PBLUETOOTH_DEVICE_INFO pDevice);
150typedef WINBOOL (*CALLBACK PFN_AUTHENTICATION_CALLBACK_EX)(LPVOID pvParam,PBLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS pAuthCallbackParams);
151typedef WINBOOL (*PFN_AUTHENTICATION_CALLBACK)(LPVOID pvParam,PBLUETOOTH_DEVICE_INFO pDevice);
152typedef WINBOOL (*PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK)(ULONG uAttribId,LPBYTE pValueStream,ULONG cbStreamSize,LPVOID pvParam);
153
154typedef 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
172DWORD WINAPI BluetoothAuthenticateMultipleDevices(
173 HWND hwndParent,
174 HANDLE hRadio,
175 DWORD cDevices,
176 BLUETOOTH_DEVICE_INFO *pbtdi
177);
178
179HRESULT 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
187WINBOOL WINAPI BluetoothDisplayDeviceProperties(
188 HWND hwndParent,
189 BLUETOOTH_DEVICE_INFO *pbtdi
190);
191
192WINBOOL WINAPI BluetoothEnableDiscovery(
193 HANDLE hRadio,
194 WINBOOL fEnabled
195);
196
197WINBOOL WINAPI BluetoothEnableIncomingConnections(
198 HANDLE hRadio,
199 WINBOOL fEnabled
200);
201
202DWORD WINAPI BluetoothEnumerateInstalledServices(
203 HANDLE hRadio,
204 BLUETOOTH_DEVICE_INFO *pbtdi,
205 DWORD *pcServices,
206 GUID *pGuidServices
207);
208
209WINBOOL WINAPI BluetoothFindDeviceClose(
210 HBLUETOOTH_DEVICE_FIND hFind
211);
212
213HBLUETOOTH_DEVICE_FIND WINAPI BluetoothFindFirstDevice(
214 BLUETOOTH_DEVICE_SEARCH_PARAMS *pbtsp,
215 BLUETOOTH_DEVICE_INFO *pbtdi
216);
217
218HBLUETOOTH_RADIO_FIND WINAPI BluetoothFindFirstRadio(
219 BLUETOOTH_FIND_RADIO_PARAMS *pbtfrp,
220 HANDLE *phRadio
221);
222
223WINBOOL WINAPI BluetoothFindNextDevice(
224 HBLUETOOTH_DEVICE_FIND hFind,
225 BLUETOOTH_DEVICE_INFO *pbtdi
226);
227
228WINBOOL WINAPI BluetoothFindNextRadio(
229 HBLUETOOTH_RADIO_FIND hFind,
230 HANDLE *phRadio
231);
232
233WINBOOL WINAPI BluetoothFindRadioClose(
234 HBLUETOOTH_RADIO_FIND hFind
235);
236
237DWORD WINAPI BluetoothGetDeviceInfo(
238 HANDLE hRadio,
239 BLUETOOTH_DEVICE_INFO *pbtdi
240);
241
242DWORD WINAPI BluetoothGetRadioInfo(
243 HANDLE hRadio,
244 PBLUETOOTH_RADIO_INFO pRadioInfo
245);
246
247WINBOOL WINAPI BluetoothIsDiscoverable(
248 HANDLE hRadio
249);
250
251WINBOOL WINAPI BluetoothIsConnectable(
252 HANDLE hRadio
253);
254
255DWORD WINAPI BluetoothRegisterForAuthentication(
256 BLUETOOTH_DEVICE_INFO *pbtdi,
257 HBLUETOOTH_AUTHENTICATION_REGISTRATION *phRegHandle,
258 PFN_AUTHENTICATION_CALLBACK pfnCallback,
259 PVOID pvParam
260);
261
262HRESULT WINAPI BluetoothRegisterForAuthenticationEx(
263 const BLUETOOTH_DEVICE_INFO *pbtdiln,
264 HBLUETOOTH_AUTHENTICATION_REGISTRATION *phRegHandleOut,
265 PFN_AUTHENTICATION_CALLBACK_EX pfnCallbackIn,
266 PVOID pvParam
267);
268
269DWORD WINAPI BluetoothRemoveDevice(
270 BLUETOOTH_ADDRESS *pAddress
271);
272
273WINBOOL WINAPI BluetoothSdpEnumAttributes(
274 LPBYTE pSDPStream,
275 ULONG cbStreamSize,
276 PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK pfnCallback,
277 LPVOID pvParam
278);
279
280DWORD WINAPI BluetoothSdpGetAttributeValue(
281 LPBYTE pRecordStream,
282 ULONG cbRecordLength,
283 USHORT usAttributeId,
284 PSDP_ELEMENT_DATA pAttributeData
285);
286
287DWORD WINAPI BluetoothSdpGetContainerElementData(
288 LPBYTE pContainerStream,
289 ULONG cbContainerLength,
290 HBLUETOOTH_CONTAINER_ELEMENT *pElement,
291 PSDP_ELEMENT_DATA pData
292);
293
294DWORD BluetoothSdpGetElementData(
295 LPBYTE pSdpStream,
296 ULONG cbSpdStreamLength,
297 PSDP_ELEMENT_DATA pData
298);
299
300DWORD BluetoothSdpGetString(
301 LPBYTE pRecordStream,
302 ULONG cbRecordLength,
303 PSDP_STRING_TYPE_DATA pStringData,
304 USHORT usStringOffset,
305 PWCHAR pszString,
306 PULONG pcchStringLength
307);
308
309WINBOOL WINAPI BluetoothSelectDevices(
310 BLUETOOTH_SELECT_DEVICE_PARAMS *pbtsdp
311);
312
313WINBOOL WINAPI BluetoothSelectDevicesFree(
314 BLUETOOTH_SELECT_DEVICE_PARAMS *pbtsdp
315);
316
317DWORD WINAPI BluetoothSendAuthenticationResponse(
318 HANDLE hRadio,
319 BLUETOOTH_DEVICE_INFO *pbtdi,
320 LPWSTR pszPasskey
321);
322
323HRESULT WINAPI BluetoothSendAuthenticationResponseEx(
324 HANDLE hRadioIn,
325 PBLUETOOTH_AUTHENTICATE_RESPONSE pauthResponse
326);
327
328DWORD WINAPI BluetoothSetLocalServiceInfo(
329 HANDLE hRadioIn,
330 const GUID *pClassGuid,
331 ULONG ulInstance,
332 const BLUETOOTH_LOCAL_SERVICE_INFO *pServiceInfoIn
333);
334
335DWORD WINAPI BluetoothSetServiceState(
336 HANDLE hRadio,
337 BLUETOOTH_DEVICE_INFO *pbtdi,
338 GUID *pGuidService,
339 DWORD dwServiceFlags
340);
341
342WINBOOL WINAPI BluetoothUnregisterAuthentication(
343 HBLUETOOTH_AUTHENTICATION_REGISTRATION hRegHandle
344);
345
346DWORD WINAPI BluetoothUpdateDeviceRecord(
347 BLUETOOTH_DEVICE_INFO *pbtdi
348);
349
350#ifdef __cplusplus
351}
352#endif
353
354#endif /*_INC_BLUETOOTHAPIS*/
355
Note: See TracBrowser for help on using the repository browser.