3 #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
9 #define BT_PORT_ANY ((ULONG)-1)
10 #define BT_PORT_MIN 0x1
11 #define BT_PORT_MAX 0xffff
12 #define BT_PORT_DYN_FIRST 0x1001
24 DEFINE_GUID(SVCID_BTH_PROVIDER
, 0x6aa63e0, 0x7d60, 0x41ff, 0xaf, 0xb2, 0x3e, 0xe6, 0xd2, 0xd9, 0x39, 0x2d);
26 #define BTH_ADDR_STRING_SIZE 12
28 #define BTHPROTO_RFCOMM 0x0003
29 #define BTHPROTO_L2CAP 0x0100
31 #define SOL_RFCOMM BTHPROTO_RFCOMM
32 #define SOL_L2CAP BTHPROTO_L2CAP
33 #define SOL_SDP 0x0101
35 #define SO_BTH_AUTHENTICATE 0x80000001
36 #define SO_BTH_ENCRYPT 0x00000002
37 #define SO_BTH_MTU 0x80000007
38 #define SO_BTH_MTU_MAX 0x80000008
39 #define SO_BTH_MTU_MIN 0x8000000a
41 #define RFCOMM_MAX_MTU 0x000003F3
42 #define RFCOMM_MIN_MTU 0x00000017
44 #define BTH_SDP_VERSION 1
46 #define SDP_DEFAULT_INQUIRY_SECONDS 6
47 #define SDP_MAX_INQUIRY_SECONDS 60
49 #define SDP_DEFAULT_INQUIRY_MAX_RESPONSES 255
51 #define SDP_SERVICE_SEARCH_REQUEST 1
52 #define SDP_SERVICE_ATTRIBUTE_REQUEST 2
53 #define SDP_SERVICE_SEARCH_ATTRIBUTE_REQUEST 3
55 #define BTHNS_RESULT_DEVICE_CONNECTED 0x00010000
56 #define BTHNS_RESULT_DEVICE_REMEMBERED 0x00020000
57 #define BTHNS_RESULT_DEVICE_AUTHENTICATED 0x00040000
59 #define SIO_RFCOMM_SEND_COMMAND _WSAIORW (IOC_VENDOR, 101)
60 #define SIO_RFCOMM_WAIT_COMMAND _WSAIORW (IOC_VENDOR, 102)
62 #define SIO_BTH_PING _WSAIORW (IOC_VENDOR, 8)
63 #define SIO_BTH_INFO _WSAIORW (IOC_VENDOR, 9)
64 #define SIO_RFCOMM_SESSION_FLOW_OFF _WSAIORW (IOC_VENDOR, 103)
65 #define SIO_RFCOMM_TEST _WSAIORW (IOC_VENDOR, 104)
66 #define SIO_RFCOMM_USECFC _WSAIORW (IOC_VENDOR, 105)
69 #define BIT(b) (1<<(b))
72 #define MSC_EA_BIT EA_BIT
73 #define MSC_FC_BIT BIT(1)
74 #define MSC_RTC_BIT BIT(2)
75 #define MSC_RTR_BIT BIT(3)
76 #define MSC_RESERVED (BIT(4)|BIT(5))
77 #define MSC_IC_BIT BIT(6)
78 #define MSC_DV_BIT BIT(7)
79 #define MSC_BREAK_BIT BIT(1)
80 #define MSC_SET_BREAK_LENGTH(b, l) ((b) = ((b)&0x3) | (((l)&0xf) << 4))
82 #define RLS_ERROR 0x01
83 #define RLS_OVERRUN 0x02
84 #define RLS_PARITY 0x04
85 #define RLS_FRAMING 0x08
87 #define RPN_BAUD_2400 0
88 #define RPN_BAUD_4800 1
89 #define RPN_BAUD_7200 2
90 #define RPN_BAUD_9600 3
91 #define RPN_BAUD_19200 4
92 #define RPN_BAUD_38400 5
93 #define RPN_BAUD_57600 6
94 #define RPN_BAUD_115200 7
95 #define RPN_BAUD_230400 8
97 #define RPN_DATA_5 0x0
98 #define RPN_DATA_6 0x1
99 #define RPN_DATA_7 0x2
100 #define RPN_DATA_8 0x3
102 #define RPN_STOP_1 0x0
103 #define RPN_STOP_1_5 0x4
105 #define RPN_PARITY_NONE 0x00
106 #define RPN_PARITY_ODD 0x08
107 #define RPN_PARITY_EVEN 0x18
108 #define RPN_PARITY_MARK 0x28
109 #define RPN_PARITY_SPACE 0x38
111 #define RPN_FLOW_X_IN 0x01
112 #define RPN_FLOW_X_OUT 0x02
113 #define RPN_FLOW_RTR_IN 0x04
114 #define RPN_FLOW_RTR_OUT 0x08
115 #define RPN_FLOW_RTC_IN 0x10
116 #define RPN_FLOW_RTC_OUT 0x20
118 #define RPN_PARAM_BAUD 0x01
119 #define RPN_PARAM_DATA 0x02
120 #define RPN_PARAM_STOP 0x04
121 #define RPN_PARAM_PARITY 0x08
122 #define RPN_PARAM_P_TYPE 0x10
123 #define RPN_PARAM_XON 0x20
124 #define RPN_PARAM_XOFF 0x40
125 #define RPN_PARAM_X_IN 0x01
126 #define RPN_PARAM_X_OUT 0x02
127 #define RPN_PARAM_RTR_IN 0x04
128 #define RPN_PARAM_RTR_OUT 0x08
129 #define RPN_PARAM_RTC_IN 0x10
130 #define RPN_PARAM_RTC_OUT 0x20
132 #define RFCOMM_CMD_NONE 0
133 #define RFCOMM_CMD_MSC 1
134 #define RFCOMM_CMD_RLS 2
135 #define RFCOMM_CMD_RPN 3
136 #define RFCOMM_CMD_RPN_REQUEST 4
137 #define RFCOMM_CMD_RPN_RESPONSE 5
145 typedef struct _SOCKADDR_BTH
{
146 USHORT addressFamily
;
150 } SOCKADDR_BTH
, *PSOCKADDR_BTH
;
152 typedef struct _BTH_SET_SERVICE
{
154 HANDLE
*pRecordHandle
;
157 ULONG ulRecordLength
;
159 } BTH_SET_SERVICE
, *PBTH_SET_SERVICE
;
161 typedef struct _BTH_QUERY_DEVICE
{
164 } BTH_QUERY_DEVICE
, *PBTH_QUERY_DEVICE
;
166 typedef struct _BTH_QUERY_SERVICE
{
169 SdpQueryUuid uuids
[MAX_UUIDS_IN_QUERY
];
171 SdpAttributeRange pRange
[1];
172 } BTH_QUERY_SERVICE
, *PBTH_QUERY_SERVICE
;
174 typedef struct _RFCOMM_MSC_DATA
{
177 } RFCOMM_MSC_DATA
, *PRFCOMM_MSC_DATA
;
179 typedef struct _RFCOMM_RLS_DATA
{
181 } RFCOMM_RLS_DATA
, *PRFCOMM_RLS_DATA
;
183 typedef struct _RFCOMM_RPN_DATA
{
189 UCHAR ParameterMask1
;
190 UCHAR ParameterMask2
;
191 } RFCOMM_RPN_DATA
, *PRFCOMM_RPN_DATA
;
193 typedef struct _RFCOMM_COMMAND
{
200 } RFCOMM_COMMAND
, *PRFCOMM_COMMAND
;
202 typedef struct _BTH_PING_REQ
{
205 UCHAR data
[MAX_L2CAP_PING_DATA_LENGTH
];
206 } BTH_PING_REQ
, *PBTH_PING_REQ
;
208 typedef struct _BTH_PING_RSP
{
210 UCHAR data
[MAX_L2CAP_PING_DATA_LENGTH
];
211 } BTH_PING_RSP
, *PBTH_PING_RSP
;
213 typedef struct _BTH_INFO_REQ
{
216 } BTH_INFO_REQ
, *PBTH_INFO_REQ
;
218 typedef struct _BTH_INFO_RSP
{
222 USHORT connectionlessMTU
;
223 UCHAR data
[MAX_L2CAP_INFO_DATA_LENGTH
];
225 } BTH_INFO_RSP
, *PBTH_INFO_RSP
;
227 typedef struct _BTH_SET_SERVICE BTHNS_SETBLOB
, *PBTHNS_SETBLOB
;
228 typedef struct _BTH_QUERY_DEVICE BTHNS_INQUIRYBLOB
, *PBTHNS_INQUIRYBLOB
;
229 typedef struct _BTH_QUERY_SERVICE BTHNS_RESTRICTIONBLOB
, *PBTHNS_RESTRICTIONBLOB
;
233 #endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) */