_BRB_SCO_TRANSFER structure (bthddi.h)

The _BRB_SCO_TRANSFER structure describes a buffer to read isochronous data from, or write isochronous data to a SCO channel.

Syntax

struct _BRB_SCO_TRANSFER {
  BRB_HEADER         Hdr;
  BTH_ADDR           BtAddress;
  SCO_CHANNEL_HANDLE ChannelHandle;
  ULONG              TransferFlags;
  ULONG              BufferSize;
  PVOID              Buffer;
  PMDL               BufferMDL;
  ULONGLONG          DataTag;
};

Members

Hdr

A BRB_HEADER structure that contains information about the current BRB.

BtAddress

The Bluetooth address of the remote device.

ChannelHandle

The SCO channel handle that was returned by Bluetooth driver stack in response to an earlier BRB_SCO_OPEN_CHANNEL or BRB_SCO_OPEN_CHANNEL_RESPONSE request.

TransferFlags

Flags that specify the basic behavior of the BRB. Valid flag values are listed in the following table.

Flag Description
SCO_TRANSFER_DIRECTION_IN If this bit is set, the BRB reads isochronous data from a remote device through the SCO channel.
SCO_TRANSFER_DIRECTION_OUT If this bit is set, the BRB writes isochronous data to a remote device through the SCO channel.

BufferSize

The size, in bytes, of the input buffer described by the Buffer member of this structure.

Buffer

A pointer to the input buffer. This value should be NULL when the Buffer member is not used.

BufferMDL

A pointer to the MDL input buffer. This value should be NULL when the BufferMDL member is not used.

DataTag

SCO write

Remarks

To read isochronous data from or write isochronous data to a SCO connection, profile drivers should build and send a BRB_SCO_TRANSFER request.

Each SCO connection is bidirectional, and can be read from and written to simultaneously.

Read BRBs will remain pending until data arrives or until the profile driver flushes them. It is recommended that higher-level drivers have at least two pending read BRBs open at any time to accept incoming data from the remote device.

The Bluetooth driver stack does not provide any buffering for incoming isochronous data. Therefore a small gap between the completion of one read IRP and the submission of the next can cause data loss.

If both Buffer and BufferMDL contain non-NULL values, then BufferMDL takes precedence.

Requirements

Requirement Value
Minimum supported client Versions:_Supported in Windows Vista, and later.
Header bthddi.h (include Bthddi.h)

See also

BRB_HEADER

BRB_SCO_OPEN_CHANNEL

BRB_SCO_OPEN_CHANNEL_RESPONSE

BRB_SCO_TRANSFER