Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
A version of this page is also available for
4/8/2010

This structure defines the Bluetooth socket address.

Syntax

typedef struct _SOCKADDR_BTH {
  USHORT 
addressFamily;
  bt_addr 
btAddr;
  GUID 
serviceClassId;
  ULONG 
port;
} SOCKADDR_BTH, *PSOCKADDR_BTH;

Members

addressFamily

Value that is set to the Bluetooth address family of AF_BTH.

btAddr

Target device address of zero.

serviceClassId

When connecting, the port must contain the server channel number of the RFCOMM service on the target device, or zero. If zero is specified, the serviceClassIdfield must contain a GUID for that service. In this case, Winsock performs an SDP query on the application's behalf, and then uses the resulting server channel.

port

Service channel number or zero.

Remarks

You can use a family of macros defined in %_WINCEROOT%\Public\Common\SDK\Inc\Ws2bth.h to translate between bt_addrand NAP and SAP defined in the Bluetooth specifications.

Copy Code
GET_NAP()bt_addr)	 // get NAP part of the address
GET_SAP(_bt_addr)	 // get SAP part of the address
SET_NAP_SAP(_nap, _sap) // form the bt_addr from NAP and SAP

Example

Copy Code
bt_addr bt= SET_NAP_SAP(nap, sap);
wprintf(L"Connecting to %04x%08x.../n", GET_NAP(bt), GET_SAP(bt));

For servers, unless a fixed server channel is specified by a future Bluetooth profile specification, applications should use the value of 0.

If the port is 0, the port is allocated automatically. Server channels are a global resource. Bluetooth devices, for all applications, must share 31 channels between Winsock and Virtual COM ports.

If there is no service channel available, or the one specified is already reserved by another application, the call will fail. If the call succeeds, the service channel is reserved until the socket is closed. To retrieve the channel number for SDP registration, use the getsockname (Windows Sockets)function.

For a client, the port must contain the server channel number of the RFCOMM service on the target device, or 0. If 0 is specified, the serviceClassIdfield must contain a GUID for that service. In this case, Winsock performs an SDP query on the application's behalf, then uses the resulting server channel.

Requirements

Header ws2bth.h
Windows Embedded CE Windows CE .NET 4.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also