mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-22 03:15:07 +00:00
355 lines
9.8 KiB
C
355 lines
9.8 KiB
C
/**
|
|
* This file has no copyright assigned and is placed in the Public Domain.
|
|
* This file is part of the mingw-w64 runtime package.
|
|
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
|
*/
|
|
#ifndef _INC_BLUETOOTHAPIS
|
|
#define _INC_BLUETOOTHAPIS
|
|
|
|
#include <_mingw.h>
|
|
#include <bthdef.h>
|
|
#include <bthsdpdef.h>
|
|
|
|
#define BLUETOOTH_MAX_NAME_SIZE 248
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef LPVOID HBLUETOOTH_DEVICE_FIND;
|
|
typedef LPVOID HBLUETOOTH_RADIO_FIND;
|
|
typedef LPVOID HBLUETOOTH_AUTHENTICATION_REGISTRATION;
|
|
typedef LPVOID HBLUETOOTH_CONTAINER_ELEMENT;
|
|
|
|
typedef struct _BLUETOOTH_ADDRESS {
|
|
__C89_NAMELESS union {
|
|
BTH_ADDR ullLong;
|
|
BYTE rgBytes[6];
|
|
};
|
|
} BLUETOOTH_ADDRESS;
|
|
|
|
typedef struct _BLUETOOTH_COD_PAIRS {
|
|
ULONG ulCODMask;
|
|
LPCWSTR pcszDescription;
|
|
} BLUETOOTH_COD_PAIRS;
|
|
|
|
typedef struct _BLUETOOTH_DEVICE_INFO {
|
|
DWORD dwSize;
|
|
BLUETOOTH_ADDRESS Address;
|
|
ULONG ulClassofDevice;
|
|
WINBOOL fConnected;
|
|
WINBOOL fRemembered;
|
|
WINBOOL fAuthenticated;
|
|
SYSTEMTIME stLastSeen;
|
|
SYSTEMTIME stLastUsed;
|
|
WCHAR szName[BLUETOOTH_MAX_NAME_SIZE];
|
|
} BLUETOOTH_DEVICE_INFO, *PBLUETOOTH_DEVICE_INFO;
|
|
|
|
typedef struct _BLUETOOTH_DEVICE_SEARCH_PARAMS {
|
|
DWORD dwSize;
|
|
WINBOOL fReturnAuthenticated;
|
|
WINBOOL fReturnRemembered;
|
|
WINBOOL fReturnUnknown;
|
|
WINBOOL fReturnConnected;
|
|
WINBOOL fIssueInquiry;
|
|
UCHAR cTimeoutMultiplier;
|
|
HANDLE hRadio;
|
|
} BLUETOOTH_DEVICE_SEARCH_PARAMS;
|
|
|
|
typedef struct _BLUETOOTH_FIND_RADIO_PARAMS {
|
|
DWORD dwSize;
|
|
} BLUETOOTH_FIND_RADIO_PARAMS;
|
|
|
|
typedef struct _BLUETOOTH_RADIO_INFO {
|
|
DWORD dwSize;
|
|
BLUETOOTH_ADDRESS address;
|
|
WCHAR szName[BLUETOOTH_MAX_NAME_SIZE];
|
|
ULONG ulClassofDevice;
|
|
USHORT lmpSubversion;
|
|
USHORT manufacturer;
|
|
} BLUETOOTH_RADIO_INFO, *PBLUETOOTH_RADIO_INFO;
|
|
|
|
typedef enum _BLUETOOTH_AUTHENTICATION_METHOD {
|
|
BLUETOOTH_AUTHENTICATION_METHOD_LEGACY = 0x1,
|
|
BLUETOOTH_AUTHENTICATION_METHOD_OOB,
|
|
BLUETOOTH_AUTHENTICATION_METHOD_NUMERIC_COMPARISON,
|
|
BLUETOOTH_AUTHENTICATION_METHOD_PASSKEY_NOTIFICATION,
|
|
BLUETOOTH_AUTHENTICATION_METHOD_PASSKEY
|
|
} BLUETOOTH_AUTHENTICATION_METHOD;
|
|
|
|
typedef enum _BLUETOOTH_IO_CAPABILITY {
|
|
BLUETOOTH_IO_CAPABILITY_DISPLAYONLY = 0x00,
|
|
BLUETOOTH_IO_CAPABILITY_DISPLAYYESNO = 0x01,
|
|
BLUETOOTH_IO_CAPABILITY_KEYBOARDONLY = 0x02,
|
|
BLUETOOTH_IO_CAPABILITY_NOINPUTNOOUTPUT = 0x03,
|
|
BLUETOOTH_IO_CAPABILITY_UNDEFINED = 0xff
|
|
} BLUETOOTH_IO_CAPABILITY;
|
|
|
|
typedef enum _BLUETOOTH_AUTHENTICATION_REQUIREMENTS {
|
|
MITMProtectionNotRequired = 0x00,
|
|
MITMProtectionRequired = 0x01,
|
|
MITMProtectionNotRequiredBonding = 0x02,
|
|
MITMProtectionRequiredBonding = 0x03,
|
|
MITMProtectionNotRequiredGeneralBonding = 0x04,
|
|
MITMProtectionRequiredGeneralBonding = 0x05,
|
|
MITMProtectionNotDefined = 0xff
|
|
} BLUETOOTH_AUTHENTICATION_REQUIREMENTS;
|
|
|
|
typedef struct _BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS {
|
|
BLUETOOTH_DEVICE_INFO deviceInfo;
|
|
BLUETOOTH_AUTHENTICATION_METHOD authenticationMethod;
|
|
BLUETOOTH_IO_CAPABILITY ioCapability;
|
|
BLUETOOTH_AUTHENTICATION_REQUIREMENTS authenticationRequirements;
|
|
__C89_NAMELESS union {
|
|
ULONG Numeric_Value;
|
|
ULONG Passkey;
|
|
} ;
|
|
} BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS, *PBLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS;
|
|
|
|
#define BLUETOOTH_MAX_SERVICE_NAME_SIZE 256
|
|
#define BLUETOOTH_DEVICE_NAME_SIZE 256
|
|
typedef struct _BLUETOOTH_LOCAL_SERVICE_INFO {
|
|
BOOL Enabled;
|
|
BLUETOOTH_ADDRESS btAddr;
|
|
WCHAR szName[BLUETOOTH_MAX_SERVICE_NAME_SIZE];
|
|
WCHAR szDeviceString[BLUETOOTH_DEVICE_NAME_SIZE];
|
|
} BLUETOOTH_LOCAL_SERVICE_INFO;
|
|
|
|
#define BTH_MAX_PIN_SIZE 16
|
|
typedef struct _BLUETOOTH_PIN_INFO {
|
|
UCHAR pin[BTH_MAX_PIN_SIZE];
|
|
UCHAR pinLength;
|
|
} BLUETOOTH_PIN_INFO, *PBLUETOOTH_PIN_INFO;
|
|
|
|
typedef struct _BLUETOOTH_OOB_DATA_INFO {
|
|
UCHAR C[16];
|
|
UCHAR R[16];
|
|
} BLUETOOTH_OOB_DATA_INFO, *PBLUETOOTH_OOB_DATA_INFO;
|
|
|
|
typedef struct _BLUETOOTH_NUMERIC_COMPARISON_INFO {
|
|
ULONG NumericValue;
|
|
} BLUETOOTH_NUMERIC_COMPARISON_INFO, *PBLUETOOTH_NUMERIC_COMPARISON_INFO;
|
|
|
|
typedef struct _BLUETOOTH_PASSKEY_INFO {
|
|
ULONG passkey;
|
|
} BLUETOOTH_PASSKEY_INFO, *PBLUETOOTH_PASSKEY_INFO;
|
|
|
|
typedef struct _BLUETOOTH_AUTHENTICATE_RESPONSE {
|
|
BLUETOOTH_ADDRESS bthAddressRemote;
|
|
BLUETOOTH_AUTHENTICATION_METHOD authMethod;
|
|
__C89_NAMELESS union {
|
|
BLUETOOTH_PIN_INFO pinInfo;
|
|
BLUETOOTH_OOB_DATA_INFO oobInfo;
|
|
BLUETOOTH_NUMERIC_COMPARISON_INFO numericCompInfo;
|
|
BLUETOOTH_PASSKEY_INFO passkeyInfo;
|
|
};
|
|
UCHAR negativeResponse;
|
|
} BLUETOOTH_AUTHENTICATE_RESPONSE, *PBLUETOOTH_AUTHENTICATE_RESPONSE;
|
|
|
|
typedef WINBOOL (*PFN_DEVICE_CALLBACK)(LPVOID pvParam,PBLUETOOTH_DEVICE_INFO pDevice);
|
|
typedef WINBOOL (*CALLBACK PFN_AUTHENTICATION_CALLBACK_EX)(LPVOID pvParam,PBLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS pAuthCallbackParams);
|
|
typedef WINBOOL (*PFN_AUTHENTICATION_CALLBACK)(LPVOID pvParam,PBLUETOOTH_DEVICE_INFO pDevice);
|
|
typedef WINBOOL (*PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK)(ULONG uAttribId,LPBYTE pValueStream,ULONG cbStreamSize,LPVOID pvParam);
|
|
|
|
typedef struct _BLUETOOTH_SELECT_DEVICE_PARAMS {
|
|
DWORD dwSize;
|
|
ULONG cNumOfClasses;
|
|
BLUETOOTH_COD_PAIRS *prgClassOfDevices;
|
|
LPWSTR pszInfo;
|
|
HWND hwndParent;
|
|
BOOL fForceAuthentication;
|
|
BOOL fShowAuthenticated;
|
|
BOOL fShowRemembered;
|
|
BOOL fShowUnknown;
|
|
BOOL fAddNewDeviceWizard;
|
|
BOOL fSkipServicesPage;
|
|
PFN_DEVICE_CALLBACK pfnDeviceCallback;
|
|
LPVOID pvParam;
|
|
DWORD cNumDevices;
|
|
PBLUETOOTH_DEVICE_INFO pDevices;
|
|
} BLUETOOTH_SELECT_DEVICE_PARAMS;
|
|
|
|
DWORD WINAPI BluetoothAuthenticateMultipleDevices(
|
|
HWND hwndParent,
|
|
HANDLE hRadio,
|
|
DWORD cDevices,
|
|
BLUETOOTH_DEVICE_INFO *pbtdi
|
|
);
|
|
|
|
HRESULT WINAPI BluetoothAuthenticateDeviceEx(
|
|
HWND hwndParentIn,
|
|
HANDLE hRadioIn,
|
|
BLUETOOTH_DEVICE_INFO *pbtdiInout,
|
|
PBLUETOOTH_OOB_DATA_INFO pbtOobData,
|
|
BLUETOOTH_AUTHENTICATION_REQUIREMENTS authenticationRequirement
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothDisplayDeviceProperties(
|
|
HWND hwndParent,
|
|
BLUETOOTH_DEVICE_INFO *pbtdi
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothEnableDiscovery(
|
|
HANDLE hRadio,
|
|
WINBOOL fEnabled
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothEnableIncomingConnections(
|
|
HANDLE hRadio,
|
|
WINBOOL fEnabled
|
|
);
|
|
|
|
DWORD WINAPI BluetoothEnumerateInstalledServices(
|
|
HANDLE hRadio,
|
|
BLUETOOTH_DEVICE_INFO *pbtdi,
|
|
DWORD *pcServices,
|
|
GUID *pGuidServices
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothFindDeviceClose(
|
|
HBLUETOOTH_DEVICE_FIND hFind
|
|
);
|
|
|
|
HBLUETOOTH_DEVICE_FIND WINAPI BluetoothFindFirstDevice(
|
|
BLUETOOTH_DEVICE_SEARCH_PARAMS *pbtsp,
|
|
BLUETOOTH_DEVICE_INFO *pbtdi
|
|
);
|
|
|
|
HBLUETOOTH_RADIO_FIND WINAPI BluetoothFindFirstRadio(
|
|
BLUETOOTH_FIND_RADIO_PARAMS *pbtfrp,
|
|
HANDLE *phRadio
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothFindNextDevice(
|
|
HBLUETOOTH_DEVICE_FIND hFind,
|
|
BLUETOOTH_DEVICE_INFO *pbtdi
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothFindNextRadio(
|
|
HBLUETOOTH_RADIO_FIND hFind,
|
|
HANDLE *phRadio
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothFindRadioClose(
|
|
HBLUETOOTH_RADIO_FIND hFind
|
|
);
|
|
|
|
DWORD WINAPI BluetoothGetDeviceInfo(
|
|
HANDLE hRadio,
|
|
BLUETOOTH_DEVICE_INFO *pbtdi
|
|
);
|
|
|
|
DWORD WINAPI BluetoothGetRadioInfo(
|
|
HANDLE hRadio,
|
|
PBLUETOOTH_RADIO_INFO pRadioInfo
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothIsDiscoverable(
|
|
HANDLE hRadio
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothIsConnectable(
|
|
HANDLE hRadio
|
|
);
|
|
|
|
DWORD WINAPI BluetoothRegisterForAuthentication(
|
|
BLUETOOTH_DEVICE_INFO *pbtdi,
|
|
HBLUETOOTH_AUTHENTICATION_REGISTRATION *phRegHandle,
|
|
PFN_AUTHENTICATION_CALLBACK pfnCallback,
|
|
PVOID pvParam
|
|
);
|
|
|
|
HRESULT WINAPI BluetoothRegisterForAuthenticationEx(
|
|
const BLUETOOTH_DEVICE_INFO *pbtdiln,
|
|
HBLUETOOTH_AUTHENTICATION_REGISTRATION *phRegHandleOut,
|
|
PFN_AUTHENTICATION_CALLBACK_EX pfnCallbackIn,
|
|
PVOID pvParam
|
|
);
|
|
|
|
DWORD WINAPI BluetoothRemoveDevice(
|
|
BLUETOOTH_ADDRESS *pAddress
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothSdpEnumAttributes(
|
|
LPBYTE pSDPStream,
|
|
ULONG cbStreamSize,
|
|
PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK pfnCallback,
|
|
LPVOID pvParam
|
|
);
|
|
|
|
DWORD WINAPI BluetoothSdpGetAttributeValue(
|
|
LPBYTE pRecordStream,
|
|
ULONG cbRecordLength,
|
|
USHORT usAttributeId,
|
|
PSDP_ELEMENT_DATA pAttributeData
|
|
);
|
|
|
|
DWORD WINAPI BluetoothSdpGetContainerElementData(
|
|
LPBYTE pContainerStream,
|
|
ULONG cbContainerLength,
|
|
HBLUETOOTH_CONTAINER_ELEMENT *pElement,
|
|
PSDP_ELEMENT_DATA pData
|
|
);
|
|
|
|
DWORD BluetoothSdpGetElementData(
|
|
LPBYTE pSdpStream,
|
|
ULONG cbSpdStreamLength,
|
|
PSDP_ELEMENT_DATA pData
|
|
);
|
|
|
|
DWORD BluetoothSdpGetString(
|
|
LPBYTE pRecordStream,
|
|
ULONG cbRecordLength,
|
|
PSDP_STRING_TYPE_DATA pStringData,
|
|
USHORT usStringOffset,
|
|
PWCHAR pszString,
|
|
PULONG pcchStringLength
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothSelectDevices(
|
|
BLUETOOTH_SELECT_DEVICE_PARAMS *pbtsdp
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothSelectDevicesFree(
|
|
BLUETOOTH_SELECT_DEVICE_PARAMS *pbtsdp
|
|
);
|
|
|
|
DWORD WINAPI BluetoothSendAuthenticationResponse(
|
|
HANDLE hRadio,
|
|
BLUETOOTH_DEVICE_INFO *pbtdi,
|
|
LPWSTR pszPasskey
|
|
);
|
|
|
|
HRESULT WINAPI BluetoothSendAuthenticationResponseEx(
|
|
HANDLE hRadioIn,
|
|
PBLUETOOTH_AUTHENTICATE_RESPONSE pauthResponse
|
|
);
|
|
|
|
DWORD WINAPI BluetoothSetLocalServiceInfo(
|
|
HANDLE hRadioIn,
|
|
const GUID *pClassGuid,
|
|
ULONG ulInstance,
|
|
const BLUETOOTH_LOCAL_SERVICE_INFO *pServiceInfoIn
|
|
);
|
|
|
|
DWORD WINAPI BluetoothSetServiceState(
|
|
HANDLE hRadio,
|
|
BLUETOOTH_DEVICE_INFO *pbtdi,
|
|
GUID *pGuidService,
|
|
DWORD dwServiceFlags
|
|
);
|
|
|
|
WINBOOL WINAPI BluetoothUnregisterAuthentication(
|
|
HBLUETOOTH_AUTHENTICATION_REGISTRATION hRegHandle
|
|
);
|
|
|
|
DWORD WINAPI BluetoothUpdateDeviceRecord(
|
|
BLUETOOTH_DEVICE_INFO *pbtdi
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /*_INC_BLUETOOTHAPIS*/
|
|
|