_BRB_L2CA_ACL_TRANSFER構造体 (bthddi.h)
_BRB_L2CA_ACL_TRANSFER構造体は、L2CAP チャネルから非同期データを読み取ったり、非同期データを書き込んだりするためのバッファーを記述します。
構文
struct _BRB_L2CA_ACL_TRANSFER {
BRB_HEADER Hdr;
BTH_ADDR BtAddress;
L2CAP_CHANNEL_HANDLE ChannelHandle;
ULONG TransferFlags;
ULONG BufferSize;
PVOID Buffer;
PMDL BufferMDL;
LONGLONG Timeout;
ULONG RemainingBufferSize;
};
メンバーズ
Hdr
現在の BRB に関する情報を含む BRB_HEADER 構造体。
BtAddress
リモート デバイスのアドレス。
ChannelHandle
以前の BRB_L2CA_OPEN_CHANNEL または Bluetoothに応答してドライバー スタックによって返された L2CAP チャネル ハンドル BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求。
TransferFlags
インターフェイスの基本的な動作を指定するフラグの組み合わせ。 複数のフラグを同時に設定できます。 有効なフラグ値については、次の表で説明します。
旗 | 形容 |
---|---|
ACL_SHORT_TRANSFER_OK | このビットが設定されている場合、バッファーがいっぱいになるまでに読み取り操作を完了できます。 これは、ACL_TRANSFER_DIRECTION_INと組み合わせてのみ設定できます。 |
ACL_TRANSFER_DIRECTION_IN | このビットが設定されている場合、データはリモート デバイスから受信されます。 このフラグは、ACL_TRANSFER_DIRECTION_OUTと組み合わせて設定することはできません。 |
ACL_TRANSFER_DIRECTION_OUT | このビットが設定されている場合、データはリモート デバイスに送信されます。 このフラグは、ACL_TRANSFER_DIRECTION_INと組み合わせて設定することはできません。 |
ACL_TRANSFER_TIMEOUT | 読み取り操作は、Timeout メンバーで指定されたミリ秒数後に停止する必要があります。 |
BufferSize
バッファーのサイズ (バイト単位)。
Buffer
入力バッファーへのポインター。
BufferMDL
MDL 入力バッファーへのポインター。
Timeout
読み取りアクションが取り消され、この時点まで消費されたすべてのデータが失われるまでの時間 (ミリ秒単位)。
RemainingBufferSize
BRB 呼び出し後にバッファーに残された領域の量 (バイト単位)。
備考
L2CAP チャネルから非同期データを読み取ったり、L2CAP チャネルに非同期データを書き込んだりするには、プロファイル ドライバーがビルド し、BRB_L2CA_ACL_TRANSFER 要求 送信する必要があります。
各 L2CAP 接続は双方向であり、同時に読み取りと書き込みを行うことができます。
タイムアウトが指定されていない場合、読み取り要求に関連付けられている BRB は、データが到着するまで、または取り消されるまで保留中のままになります。 プロファイル ドライバーは、リモート デバイスからの受信データを受け入れるために、読み取り要求を保留中のままにすることができます。
Bluetooth ドライバー スタックは、受信データのバッファリングを提供するため、読み取り IRP が保留中かどうかを継続的に確認する必要はありません。 プロファイル ドライバーは、BRB_L2CA_OPEN_CHANNEL 要求に関連付けられている IncomingQueueDepth メンバーに提供するバッファリングの量を指定できます。
ACL_TRANSFER_TIMEOUT フラグが TransferFlags メンバーに設定されていて、Timeout メンバーで指定された期間が経過すると、BRB_L2CA_ACL_TRANSFER 要求が完了し、エラーが返されます。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista 以降のバージョン:_Supported。 |
ヘッダー | bthddi.h (Bthddi.h を含む) |