Bluetooth

Overview of the Bluetooth technology.

To develop Bluetooth, you need these headers:

For the programming guide, see Bluetooth.

Functions

Title Description
SdpAddAttributeToTree function The Bluetooth SdpAddAttributeToTree function is used to attach an SDP attribute node to the top level of an SDP record.
SdpAppendNodeToContainerNode function The Bluetooth SdpAppendNodeToContainerNode function is used to attach an SDP node to a sequence or alternative SDP node.
SdpCreateNodeAlternative function The Bluetooth SdpCreateNodeAlternative function is used to create an empty alternative sequence SDP node.
SdpCreateNodeBoolean function The Bluetooth SdpCreateNodeBoolean function is used to allocate and initialize an SDP_NODE structure to a Boolean type.
SdpCreateNodeInt128 function The Bluetooth SdpCreateNodeInt128 function is used to allocate and initialize an SDP_NODE structure to a 128-bit integer type.
SdpCreateNodeInt16 function The Bluetooth SdpCreateNodeInt16 function is used to allocate and initialize an SDP_NODE structure to a 16-bit integer type.
SdpCreateNodeInt32 function The Bluetooth SdpCreateNodeInt32 function is used to allocate and initialize an SDP_NODE structure to a 32-bit integer type.
SdpCreateNodeInt64 function The Bluetooth SdpCreateNodeInt64 function is used to allocate and initialize an SDP_NODE structure to a 64-bit integer type.
SdpCreateNodeInt8 function The Bluetooth SdpCreateNodeInt8 function is used to allocate and initialize an SDP_NODE structure to an 8-bit integer type.
SdpCreateNodeNil function The Bluetooth SdpCreateNodeNil function is used to allocate and initialize an SDP_NODE structure to an empty node type.
SdpCreateNodeSequence function The Bluetooth SdpCreateNodeSequence function is used to create an empty sequence SDP node.
SdpCreateNodeString function The Bluetooth SdpCreateNodeString function is used to allocate and initialize an SDP_NODE structure to a string type.
SdpCreateNodeTree function The Bluetooth SdpCreateNodeTree function is used to allocate an empty root SDP_TREE_ROOT_NODE structure.
SdpCreateNodeUInt128 function The Bluetooth SdpCreateNodeUInt128 function is used to allocate and initialize an SDP_NODE structure to an unsigned 128-bit integer type.
SdpCreateNodeUInt16 function The Bluetooth SdpCreateNodeUInt16 function is used to allocate and initialize an SDP_NODE structure to an unsigned 16-bit integer type.
SdpCreateNodeUInt32 function The Bluetooth SdpCreateNodeUInt32 function is used to allocate and initialize an SDP_NODE structure to an unsigned 32-bit integer type.
SdpCreateNodeUInt64 function The Bluetooth SdpCreateNodeUInt64 function is used to allocate and initialize an SDP_NODE structure to an unsigned 64-bit integer type.
SdpCreateNodeUInt8 function The Bluetooth SdpCreateNodeUInt8 function is used to allocate and initialize an SDP_NODE structure to an unsigned 8-bit integer type.
SdpCreateNodeUUID128 function The Bluetooth SdpCreateNodeUUID128 function is used to allocate and initialize an SDP_NODE structure to a 128-bit UUID type.
SdpCreateNodeUUID16 function The Bluetooth SdpCreateNodeUUID16 function is used to allocate and initialize an SDP_NODE structure to a 16-bit UUID type.
SdpCreateNodeUUID32 function The Bluetooth SdpCreateNodeUUID32 function is used to allocate and initialize an SDP_NODE structure to a 32-bit UUID type.
SdpCreateNodeUrl function The Bluetooth SdpCreateNodeUrl function is used to allocate and initialize an SDP_NODE structure to a URL type.
SdpFindAttributeInTree function The Bluetooth SdpFindAttributeInTree function is used to locate the specified attribute node in the tree-based representation of an SDP record.
SdpFreeTree function The Bluetooth SdpFreeTree function is used to free the memory allocated for the tree-based representation of an SDP record.

Callback functions

Title Description
PBYTESWAPUINT128 callback The Bluetooth SdpByteSwapUint128 function is used to reverse the byte order of an unsigned 128-bit integer.
PBYTESWAPUINT64 callback The Bluetooth SdpByteSwapUint64 function is used to reverse the byte order of an unsigned 64-bit integer.
PBYTESWAPUUID128 callback The Bluetooth SdpByteSwapUuid128 function is used to reverse the byte order of a 128-bit universally unique identifier (UUID).
PCONVERTSTREAMTOTREE callback The Bluetooth SdpConvertStreamToTree function is used to create a Microsoft proprietary tree-based representation of an SDP record, while leaving the original stream-based representation unmodified.
PCONVERTTREETOSTREAM callback The Bluetooth SdpConvertTreeToStream function is used to produce a raw bytestream representation of an SDP record from a tree representation. The raw bytestream version is suitable for publication on a local SDP server.
PFNBTHPORT_INDICATION_CALLBACK callback Profile drivers implement a L2CAP callback function to provide the Bluetooth driver stack with a mechanism to notify the profile driver about incoming L2CAP connection requests from remote devices, and any changes to the status of a currently open L2CAP connection.
PFNBTHPORT_INDICATION_CALLBACK_ENHANCED callback Profile drivers implement an enhanced L2CAP callback function to provide the Bluetooth driver stack with a mechanism to notify the profile driver about any changes to the status of a currently open L2CAP or eL2CAP connection.
PFNBTH_ALLOCATE_BRB callback The BthAllocateBrb function allocates a Bluetooth request block (BRB) of the specified type.
PFNBTH_FREE_BRB callback The BthFreeBrb function frees a Bluetooth request block (BRB) that was allocated previously with BthAllocateBrb.
PFNBTH_INITIALIZE_BRB callback The BthInitializeBrb function initializes a Bluetooth request block (BRB) allocated on the local stack.
PFNBTH_IS_BLUETOOTH_VERSION_AVAILABLE callback The IsBluetoothVersionAvailable function checks whether a given Bluetooth version is supported by the operating system.
PFNBTH_REUSE_BRB callback The BthReuseBrb function reinitializes a Bluetooth request block (BRB) to be reused.
PFNSCO_INDICATION_CALLBACK callback Profile drivers implement a SCO callback function to provide the Bluetooth driver stack with a mechanism to notify the profile driver about incoming SCO connection requests from remote devices, and any changes to the status of a currently open SCO connection.
PGETNEXTELEMENT callback The Bluetooth SdpGetNextElement function is used to iterate through the entries found in an SDP record stream.
PRETRIEVEUINT64 callback The Bluetooth SdpRetrieveUint128 function is used to copy an unaligned 128-bit integer from an SDP stream.
PRETRIEVEUUID128 callback The Bluetooth SdpRetrieveUuid128 function is used to copy an unaligned 128-bit universally unique identifier (UUID) from an SDP stream.
PVALIDATESTREAM callback The Bluetooth SdpValidateStream function is used to parse a raw SDP record and determine if it contains errors.

Structures

Title Description
_BASEBAND_CHANNEL_INFO structure The BASEBAND_CHANNEL_INFO structure describes output information about the baseband channel that is used by a SCO link after a BRB_GET_CHANNEL_INFO BRB completes.
_BRB structure Profile drivers use Bluetooth request blocks (BRBs), to send requests to the Bluetooth driver stack. The BRB structure defines the format for all supported commands that can be sent to a Bluetooth device.
_BRB_ACL_ENTER_ACTIVE_MODE structure The _BRB_ACL_ENTER_ACTIVE_MODE structure specifies the remote device to be placed into active mode.
_BRB_ACL_GET_MODE structure The _BRB_ACL_GET_MODE structure describes the ACL mode for the specified remote device.
_BRB_GET_DEVICE_INTERFACE_STRING structure The _BRB_GET_DEVICE_INTERFACE_STRING structure describes the device interface string for the current device object.
_BRB_GET_LOCAL_BD_ADDR structure The _BRB_GET_LOCAL_BD_ADDR structure describes the address of the local radio.
_BRB_HEADER structure The BRB_HEADER structure contains header information about a Bluetooth request block (BRB), including information about the BRB type that the Bluetooth driver stack uses to determine which kind of BRB type to process.
_BRB_L2CA_ACL_TRANSFER structure The _BRB_L2CA_ACL_TRANSFER structure describes a buffer to read asynchronous data from, or write asynchronous data to a L2CAP channel.
_BRB_L2CA_CLOSE_CHANNEL structure The _BRB_L2CA_CLOSE_CHANNEL structure describes an open L2CAP channel to close.
_BRB_L2CA_OPEN_CHANNEL structure The _BRB_L2CA_OPEN_CHANNEL structure describes a L2CAP channel to open to a remote device, or a response from the profile driver accepting or rejecting an incoming L2CAP connection request that was initiated by a remote device.
_BRB_L2CA_OPEN_ENHANCED_CHANNEL structure The _BRB_L2CA_OPEN_ENHANCED_CHANNEL structure is used to open an enhanced L2CAP channel to a remote device, or send a response for accepting/rejecting an incoming enhanced L2CAP connection request that was initiated by a remote device.
_BRB_L2CA_PING structure The _BRB_L2CA_PING structure describes a request to ping a remote radio.
_BRB_L2CA_REGISTER_SERVER structure A profile driver uses the _BRB_L2CA_REGISTER_SERVER structure to register itself as a server capable of receiving L2CAP connections from remote Bluetooth devices.
_BRB_L2CA_UNREGISTER_SERVER structure A profile driver uses the _BRB_L2CA_UNREGISTER_SERVER structure to unregister itself as a server capable of receiving L2CAP connections from remote Bluetooth devices.
_BRB_L2CA_UPDATE_CHANNEL structure The _BRB_L2CA_UPDATE_CHANNEL structure describes an update to the link characteristics of an open L2CAP channel to a remote device or to ascertain when certain channel attributes have changed.
_BRB_PSM structure The _BRB_PSM structure describes a Protocol/Service Multiplexer (PSM) to register or unregister.
_BRB_SCO_CLOSE_CHANNEL structure The _BRB_SCO_CLOSE_CHANNEL structure describes a currently open SCO channel to close.
_BRB_SCO_FLUSH_CHANNEL structure The _BRB_SCO_FLUSH_CHANNEL structure describes a flush operation for a SCO channel.
_BRB_SCO_GET_CHANNEL_INFO structure The _BRB_SCO_GET_CHANNEL_INFO structure describes the settings and statistics of a SCO channel.
_BRB_SCO_GET_SYSTEM_INFO structure The _BRB_SCO_GET_SYSTEM_INFO structure describes information about the local system's support for SCO connections.
_BRB_SCO_OPEN_CHANNEL structure The _BRB_SCO_OPEN_CHANNEL structure describes a SCO channel to open to a remote device, or a response from the profile driver accepting or rejecting an incoming SCO connection request that was initiated by a remote device.
_BRB_SCO_REGISTER_SERVER structure A profile driver uses the _BRB_SCO_REGISTER_SERVER structure to register itself as a server capable of receiving SCO connections from remote Bluetooth devices.
_BRB_SCO_TRANSFER structure The _BRB_SCO_TRANSFER structure describes a buffer to read isochronous data from, or write isochronous data to a SCO channel.
_BRB_SCO_UNREGISTER_SERVER structure A profile driver uses the _BRB_SCO_UNREGISTER_SERVER structure to unregister itself as a server capable of receiving SCO connections from remote Bluetooth devices.
_BTHDDI_SDP_NODE_INTERFACE structure The BTHDDI_SDP_NODE_INTERFACE structure provides functions for manipulating SDP records, including converting them to and from a tree representation that profile drivers can more easily parse.
_BTHDDI_SDP_PARSE_INTERFACE structure The BTHDDI_SDP_PARSE_INTERFACE structure provides functions for parsing SDP records.
_BTHX_CAPABILITIES structure The BTHX_CAPABILITIES structure describes the capabilities of the Bluetooth Extensible Transport Driver.
_BTHX_HCI_READ_WRITE_CONTEXT structure The BTHX_HCI_READ_WRITE_CONTEXT structure is used as an input/output structure for the IOCTL_BTHX_READ_HCI and IOCTL_BTHX_WRITE_HCI IOCTLs.
_BTHX_VERSION structure The BTHX_VERSION structure describes the version or versions that the transport driver supports.
_BTH_COMMAND_HEADER structure The BTH_COMMAND_HEADER structure specifies header information for a vendor-specific HCI command.
_BTH_DEVICE_INFO_LIST structure The BTH_DEVICE_INFO_LIST structure contains output information about all cached, previously discovered remote devices.
_BTH_ENUMERATOR_INFO structure The BTH_ENUMERATOR_INFO structure contains information about an underlying device and the service that caused the Plug and Play (PnP) manager to load the profile driver.
_BTH_LOCAL_RADIO_INFO structure The BTH_LOCAL_RADIO_INFO structure contains information about the local Bluetooth system and radio.
_BTH_PROFILE_DRIVER_INTERFACE structure The BTH_PROFILE_DRIVER_INTERFACE structure provides functions to allocate, free, initialize, and reuse BRBs, and to determine the currently installed Bluetooth version.
_BTH_RADIO_INFO structure The BTH_RADIO_INFO structure contains information about a remote radio.
_BTH_SDP_ATTRIBUTE_SEARCH_REQUEST structure The BTH_SDP_ATTRIBUTE_SEARCH_REQUEST structure contains information pertinent to an SDP attribute search.
_BTH_SDP_CONNECT structure The BTH_SDP_CONNECT structure contains input and output information about a connection between the local Bluetooth system and a remote SDP server. This structure is passed as the input buffer and output buffer of IOCTL_BTH_SDP_CONNECT.
_BTH_SDP_DISCONNECT structure The BTH_SDP_DISCONNECT structure contains input information about a connection handle to the remote SDP connection to terminate. This structure is passed as the input buffer of IOCTL_BTH_SDP_DISCONNECT.
_BTH_SDP_RECORD structure The BTH_SDP_RECORD structure contains information about an SDP record that is to be added to the local SDP server.
_BTH_SDP_SERVICE_ATTRIBUTE_SEARCH_REQUEST structure The BTH_SDP_SERVICE_ATTRIBUTE_SEARCH_REQUEST structure contains information pertinent to a combined SDP service and attribute search. This structure is passed as the input buffer to the IOCTL_BTH_SDP_SERVICE_ATTRIBUTE_SEARCH IOCTL.
_BTH_SDP_SERVICE_SEARCH_REQUEST structure The BTH_SDP_SERVICE_SEARCH_REQUEST structure contains information pertinent to an SDP service search.
_BTH_SDP_STREAM_RESPONSE structure The BTH_SDP_STREAM_RESPONSE structure contains information about an SDP record.
_BTH_VENDOR_EVENT_INFO structure The BTH_VENDOR_EVENT_INFO structure specifies the buffer that is associated with the GUID_BLUETOOTH_HCI_VENDOR_EVENT GUID.
_BTH_VENDOR_PATTERN structure The BTH_VENDOR_PATTERN structure specifies a vendor pattern.
_BTH_VENDOR_SPECIFIC_COMMAND structure The BTH_VENDOR_SPECIFIC_COMMAND structure specifies a Bluetooth vendor-specific command.
_CHANNEL_CONFIG_PARAMETERS structure The CHANNEL_CONFIG_PARAMETERS structure contains configuration parameters for inbound and outbound directions of a L2CAP channel.
_CHANNEL_CONFIG_PARAMETERS_ENHANCED structure The CHANNEL_CONFIG_PARAMETERS_ENHANCED structure describes configuration parameters for inbound and outbound directions of an L2CAP channel.
_CHANNEL_CONFIG_RESULTS structure The CHANNEL_CONFIG_RESULTS structure contains configuration parameters and the buffer size of any extra options for the inbound and outbound directions of a L2CAP channel.
_CHANNEL_CONFIG_RESULTS_ENHANCED structure The CHANNEL_CONFIG_RESULTS_ENHANCED structure describes configuration parameters and the buffer size of any extra option for the inbound and outbound directions of an L2CAP channel.
_CO_HEADER structure The CO_HEADER structure is used to specify values for the Header member of the L2CAP_CONFIG_OPTION structure.
_INDICATION_PARAMETERS structure The INDICATION_PARAMETERS structure is passed as the Parameters parameter to a profile driver's L2CAP Callback Function.
_INDICATION_PARAMETERS_ENHANCED structure The INDICATION_PARAMETERS_ENHANCED structure is passed as the Parameters parameter to a profile driver's enhanced L2CAP Callback Function.
_L2CAP_CONFIG_OPTION structure An array of L2CAP_CONFIG_OPTION structures is used to specify values for the ExtraOptions member of the CHANNEL_CONFIG_PARAMETERS, _BRB_L2CA_OPEN_CHANNEL, and INDICATION_PARAMETERS structures.
_L2CAP_CONFIG_RANGE structure The L2CAP_CONFIG_RANGE structure is used to specify a range of possible values for the FlushTO member of the _BRB_L2CA_OPEN_CHANNEL structure during incoming requests.
_L2CAP_CONFIG_VALUE_RANGE structure The L2CAP_CONFIG_VALUE_RANGE structure is used to specify values for the Mtu and FlushTO members of the _BRB_L2CA_OPEN_CHANNEL structure.
_L2CAP_EXTENDED_FLOW_SPEC structure The L2CAP_EXTENDED_FLOW_SPEC is reserved for future use.
_L2CAP_FLOWSPEC structure This structure reserved for future use.
_L2CAP_RETRANSMISSION_AND_FLOW_CONTROL structure The L2CAP_RETRANSMISSION_AND_FLOW_CONTROL structure describes configuration parameters for enhanced retransmission mode and streaming mode.
_SCO_INDICATION_PARAMETERS structure The SCO_INDICATION_PARAMETERS structure describes indication parameters about a SCO connect or disconnect notification.
_SDP_NODE structure The SDP_NODE structure holds information about an element in a tree-based representation of an SDP record.
_SDP_NODE_DATA structure The SDP_NODE_DATA union holds the data of an element in a tree-based representation of an SDP record.
_SDP_NODE_HEADER structure The SDP_NODE_HEADER structure holds information about an element in a tree-based representation of an SDP record.
_SDP_TREE_ROOT_NODE structure The SDP_TREE_ROOT_NODE structure is the root element of a tree-based representation of an SDP record.

Enumerations

Title Description
_ACL_MODE enumeration The ACL_MODE enumeration type is used to list the possible states of an ACL connection.
_BRB_TYPE enumeration The BRB_TYPE enumeration type is used to determine the Bluetooth request block when a profile driver builds and sends a BRB.
_BRB_VERSION enumeration Reserved for internal use.
_BTHX_HCI_PACKET_TYPE enumeration The BTHX_HCI_PACKET_TYPE enumeration lists the different types of packets being sent from the Bluetooth stack to the transport driver.
_BTHX_SCO_SUPPORT enumeration The BTHX_SCO_SUPPORT enumeration lists the different types of SCO supported by the transport driver.
_CODING_FORMAT enumeration This enumeration is for internal use only.
_ENUMERATOR_ACTION enumeration Reserved for internal use.
_ENUMERATOR_TYPE enumeration The ENUMERATOR_TYPE enumeration type is used to determine whether the enumerated device is associated with a service or a protocol. The ENUMERATOR_TYPE enumeration is intended for internal use only and should not be used by profile drivers.
_INDICATION_CODE enumeration The INDICATION_CODE enumeration type indicates to a profile driver what type of L2CAP event has occurred.
_L2CAP_DISCONNECT_REASON enumeration The L2CAP_DISCONNECT_REASON enumeration type gives the reason an L2CAP channel has been disconnected.
_PCM_DATA_FORMAT enumeration This enumeration is for internal use only.
_SCO_DISCONNECT_REASON enumeration The SCO_DISCONNECT_REASON enumeration type gives the reason an SCO channel has been disconnected.
_SCO_INDICATION_CODE enumeration The SCO_INDICATION_CODE enumeration type describes the type of an incoming SCO connection or bonding state change. The Bluetooth driver stack passes a value from this enumeration in the Indication argument of a profile driver's SCO Callback Function.
_SCO_LINK_TYPE enumeration The SCO_LINK_TYPE enumeration type describes the type of link used by the SCO connection when a ScoIndicationRemoteConnect indication event is processed.
_SCO_RETRANSMISSION_EFFORT enumeration The SCO_RETRANSMISSION_EFFORT enumeration type is used to determine the retransmission policies of a SCO channel.

I/O control codes

Title Description
IOCTL_BTHX_GET_VERSION IOCTL Profile drivers use IOCTL_BTHX_GET_VERSION to get the version supported by the transport driver.
IOCTL_BTHX_QUERY_CAPABILITIES IOCTL IOCTL_BTHX_QUERY_CAPABILITIES is used to query the capabilities of the transport driver.
IOCTL_BTHX_READ_HCI IOCTL IOCTL_BTHX_READ_HCI is used to read Bluetooth ACL Data and Events from the transport layer.
IOCTL_BTHX_SET_VERSION IOCTL IOCTL_BTHX_SET_VERSION is used to inform the transport driver of the version of the extensibility interface being used.
IOCTL_BTHX_WRITE_HCI IOCTL IOCTL_BTHX_WRITE_HCI is used to write Bluetooth ACL Data and Commands to the transport layer.
IOCTL_BTH_DISCONNECT_DEVICE IOCTL Profile drivers use IOCTL_BTH_DISCONNECT_DEVICE to request the operating system to disconnect the specified remote device.
IOCTL_BTH_GET_DEVICE_INFO IOCTL The IOCTL_BTH_GET_DEVICE_INFO request returns information about all cached, previously discovered remote radios that are Bluetooth-enabled.
IOCTL_BTH_GET_LOCAL_INFO IOCTL The IOCTL_BTH_GET_LOCAL_INFO request returns information about the local Bluetooth system and radio.
IOCTL_BTH_GET_RADIO_INFO IOCTL The IOCTL_BTH_GET_RADIO_INFO request obtains information about the specified remote radio.
IOCTL_BTH_HCI_VENDOR_COMMAND IOCTL The IOCTL_BTH_HCI_VENDOR_COMMAND request allows Bluetooth applications to send vendor-specific commands to radios.
IOCTL_BTH_SDP_ATTRIBUTE_SEARCH IOCTL The IOCTL_BTH_SDP_ATTRIBUTE_SEARCH request obtains attributes for the specified SDP record.
IOCTL_BTH_SDP_CONNECT IOCTL The IOCTL_BTH_SDP_CONNECT request creates a connection to the SDP service on a remote Bluetooth device.
IOCTL_BTH_SDP_DISCONNECT IOCTL The IOCTL_BTH_SDP_DISCONNECT request closes a connection to a remote SDP server.
IOCTL_BTH_SDP_REMOVE_RECORD IOCTL The IOCTL_BTH_SDP_REMOVE_RECORD request removes a local SDP record that the profile driver previously submitted. The local server will no longer offer this record to remote devices.
IOCTL_BTH_SDP_SERVICE_ATTRIBUTE_SEARCH IOCTL The IOCTL_BTH_SDP_SERVICE_ATTRIBUTE_SEARCH request combines an SDP service and attribute search into a single operation. This allows a caller to directly obtain SDP records from a remote device.
IOCTL_BTH_SDP_SERVICE_SEARCH IOCTL The IOCTL_BTH_SDP_SERVICE_SEARCH request contacts a remote device with an SDP request for handles to SDP records of a particular service class or classes.
IOCTL_BTH_SDP_SUBMIT_RECORD IOCTL The IOCTL_BTH_SDP_SUBMIT_RECORD request allows a profile driver to add an SDP record to the local SDP server, allowing the client to advertise that a service is available on the local computer.
IOCTL_BTH_SDP_SUBMIT_RECORD_WITH_INFO IOCTL The IOCTL_BTH_SDP_SUBMIT_RECORD_WITH_INFO request adds an SDP record to the local SDP server along with attributes that are not part of the SDP record itself.
IOCTL_INTERNAL_BTHENUM_GET_DEVINFO IOCTL The IOCTL_INTERNAL_BTHENUM_GET_DEVINFO request returns information about the remote device that caused the Plug and Play (PnP) manager to load the current instance of the profile driver.
IOCTL_INTERNAL_BTHENUM_GET_ENUMINFO IOCTL The IOCTL_INTERNAL_BTHENUM_GET_ENUMINFO request obtains information about the underlying device and service that caused the Plug and Play (PnP) manager to load the profile driver.
IOCTL_INTERNAL_BTH_SUBMIT_BRB IOCTL Profile drivers use IOCTL_INTERNAL_BTH_SUBMIT_BRB to submit a Bluetooth Request Block (BRB) to the Bluetooth driver stack.