Bluetooth and WSALookupServiceBegin for Device Inquiry

This topic describes how to use the WSALookupServiceBegin function to perform an inquiry of both visible and ghosted devices. For more information, see Discovering Bluetooth Devices and Services.

The WSALookupServiceBegin function uses a WSAQUERYSET structure in its first parameter, lpqsRestrictions, to define search criteria. Bluetooth provides specific guidelines for use of the WSALookupServiceBegin function and WSAQUERYSET.

The following table lists restrictions that apply to the WSAQUERYSET structure passed to the lpqsRestrictions parameter when querying for devices.

WSAQUERYSET memberRestriction
dwSizeSet to sizeof(WSAQUERYSET).
lpBlobThis member contains an optional pointer to a BLOB structure. If this member is specified, the valid device inquire parameters for LUP_FLUSHCACHE are as follows:
  • The cbSize member of the BLOB structure must be sizeof(BTH_QUERY_DEVICE).
  • The pBlobData member is a pointer to a BTH_QUERY_DEVICE structure, for which the LAP member is the Bluetooth inquiry access code, and the length member is the length, in seconds, of the inquiry.
dwNameSpaceSet to NS_BTH.
Other membersOther members of the WSAQUERYSET structure are ignored.


The flags listed in the following table are used in the dwControlFlags parameter to control the query results. The LUP_CONTAINERS and LUP_FLUSHCACHE flags are used by the WSALookupServiceBegin function; the rest of the flags are used in calls to the WSALookupServiceNext function.

LUP_CONTAINERSSpecifies that the query purpose is to obtain a list of Bluetooth devices and not a list of services. This flag must be set.
LUP_FLUSHCACHETriggers an inquiry of local devices or causes cached results from previous queries to be returned.
LUP_RETURN_TYPEReturn the Bluetooth COD (class of device bits) directly in the lpServiceClassId member of the WSAQUERYSET structure. The COD is mapped to the Data1 member of the GUID.
LUP_RES_SERVICEReturn information for the local Bluetooth address. This flag has an effect only if LUP_RETURN_ADDR is also specified.
LUP_RETURN_NAMEReturn the display name of the device in the lpszServiceInstanceName member of the WSAQUERYSET structure for each call to the WSALookupServiceNext function. This flag must also be specified to retrieve the name member of the BTH_DEVICE_INFO structure when specifying the LUP_RETURN_BLOB flag.
LUP_RETURN_ADDRReturn a SOCKADDR_BTH structure that contains the 48-bit address of the peer in the lpcsaBuffer member of the WSAQUERYSET structure for each call to the WSALookupServiceNext function. Other members in the SOCKADDR_BTH structure will be empty.
LUP_RETURN_BLOBReturn the BTH_DEVICE_INFO structure on each subsequent call to WSALookupServiceNext.
LUP_FLUSHPREVIOUSSkip the next available device, and return the device that follows it.


Related topics

Bluetooth and WSALookupServiceBegin for Service Discovery
Bluetooth and WSALookupServiceNext
Bluetooth and WSAQUERYSET for Device Inquiry
Discovering Bluetooth Devices and Services
Windows Sockets



Community Additions