公式リファレンス:PairRequestにもちらっと記載されていますが、BluetoothWin32Authentication
でペアリングリクエストのイベントをひっかけて、プログラム側でペアリング了承を行うことができます。
C#
1//ハンドラーの登録
2BluetoothWin32Authentication authenticator = new BluetoothWin32Authentication(Win32AuthCallbackHandler);
3// この後PairRequest
4
5// ペアリングリクエストが発生した際に呼び出されるハンドラー
6private void Win32AuthCallbackHandler(Object sender, BluetoothWin32AuthenticationEventArgs e)
7{
8 e.Pin = "0000";
9 e.Confirm = true;
10}
ただ、可能なのはペアリングまでで必要なサービスのインストール等は自前で実施する必要があります。
追記
サービスプロトコルを決め打ちで良いならBluetoothDeviceInfo.SetServiceState
でインストールできました。
C#
1// ペアリング後
2targetDevice.SetServiceState(BluetoothService.HumanInterfaceDevice, true);
また、L2CapProtocolでGetServiceRecords
を実行するとそのデバイスでインストール可能なサービスを取得できるみたいです。
C#
1var serviceinfo = targetDevice.GetServiceRecords(BluetoothService.L2CapProtocol);
2foreach(var record in serviceinfo){
3 ServiceRecordUtilities.Dump(Console.Error, record);
4}
ダンプの例:
text
1AttrId: 0x0000 -- ServiceRecordHandle
2UInt32: 0x0
3
4AttrId: 0x0001 -- ServiceClassIdList
5ElementSequence
6 Uuid16: 0x1000 -- ServiceDiscoveryServer
7(中略)
8AttrId: 0x0001 -- ServiceClassIdList
9ElementSequence
10 Uuid16: 0x1124 -- HumanInterfaceDevice
11(中略)
12AttrId: 0x0001 -- ServiceClassIdList
13ElementSequence
14 Uuid16: 0x1200 -- PnPInformation
15(後略)
テキストでダンプしたデータのうちAttrId: 0x0001
のレコードのUUIDがそのデバイスで対応するプロファイルのようです。
これがうまく取得できればプロファイルもOKではないでしょうか。
※Logicool M557 のマウスで試しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/02 13:28
2020/07/02 14:11
2020/07/02 16:28
2020/07/03 08:40
2020/07/03 09:02
2020/07/03 12:01