支援藍牙事件通知
當配置檔驅動程式開啟遠端裝置的連線時,應該在連線關閉時或發生任何其他連線變更時註冊自己的通知。 此外,當配置檔驅動程式自行註冊以接受連入連線時,必須在遠端裝置嘗試連線時收到通知。
使用同步 Connection-Oriented (SCO) 連線實作並註冊 SCO 回呼函式的設定檔驅動程式。 用戶端配置檔驅動程式會在要求與遠端裝置的連線時註冊適當的回呼函式。
當 SCO 設定檔驅動程式發出BRB_SCO_OPEN_CHANNEL BRB 時,它會在 BRB 對應_BRB_SCO_OPEN_CHANNEL結構的 Callback 成員中指定其 SCO 回呼函式的指標。 如果遠端裝置接受 SCO 連線要求,則藍牙驅動程式堆疊可以在發生 SCO 連線變更時,透過回呼函式將通知傳送至設定檔驅動程式。
如需建立 SCO 連線的詳細資訊,請參閱 建立遠端裝置的 SCO 用戶端連線。
使用邏輯連結控制器和調適通訊協定的配置檔驅動程式 (L2CAP) 聯機會實作並註冊 L2CAP 回呼函式。
當 L2CAP 設定檔驅動程式發出BRB_L2CA_OPEN_CHANNEL BRB 時,它會在 BRB 對應_BRB_L2CA_OPEN_CHANNEL 結構的 Callback 成員中指定其 L2CAP 回呼函式的指標。 如果遠端裝置接受 L2CAP 連線要求,當 L2CAP 連線發生變更時,藍牙驅動程式堆疊就可以透過回呼函式傳送通知給配置檔驅動程式。
如需建立 L2CAP 連線的詳細資訊,請參閱 建立遠端裝置的 L2CAP 用戶端連線。
同樣地,當配置檔驅動程式自行註冊以接受傳入 (L2CAP、SCO) 連線要求時,它必須註冊回呼函式,以在遠端裝置嘗試連線時收到通知。
使用 L2CAP 的設定檔驅動程式會在 _BRB_L2CA_REGISTER_SERVER 結構的 IndicationCallback 成員中指定其 L2CAP 回呼函式。 接著,藍牙驅動程式堆疊可以呼叫回呼函式,以在遠端裝置嘗試起始與配置檔驅動程式的 L2CAP 連線時通知設定檔驅動程式。
使用 SCO 的設定檔驅動程式會在 _BRB_SCO_REGISTER_SERVER 結構的 IndicationCallback 成員中指定其 SCO 回呼函式。 接著,藍牙驅動程式堆疊可以呼叫回呼函式,以在遠端裝置嘗試起始與配置檔驅動程式的 SCO 連線時通知設定檔驅動程式。
配置文件驅動程式註冊適當的回呼函式之後,如果開啟連線發生事件,藍牙驅動程式堆疊也可以通知配置檔驅動程式。
注意
配置文件驅動程式可以註冊相同的回呼函式,以傳送它變更有關開啟通道的通知,以及嘗試連線到它的遠端裝置。
針對 L2CAP 連線, L2CAP 回呼函 式接受三個參數:
針對 L2CAP 連接定義的內容。 在BRB_L2CA_REGISTER_SERVER要求的情況下,此內容是在要求所傳遞之_BRB_L2CA_REGISTER_SERVER結構的 IndicationCallbackContext 成員中傳遞的值。 在 BRB_L2CA_OPEN_CHANNEL 或 BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求的情況下,此內容是在要求所傳遞之_BRB_L2CA_OPEN_CHANNEL結構的 CallbackContext 成員中傳遞的值。
來自 INDICATION_CODE 列舉的值,指出傳入 L2CAP 連線或綁定狀態變更的通知事件類型。
包含與通知事件相關聯之參數 之INDICATION_PARAMETERS 結構的指標。
在 L2CAP 回呼函式 的指示 參數中傳遞的值會指定配置檔驅動程式應該使用之 Parameters 參數之 Parameters 等位中的等位成員。
如果 指示 參數的值等於... | ...使用 Parameters 參數的下列等位成員 |
---|---|
IndicationRemoteConnect | [連接] |
IndicationRemoteConfigRequest | ConfigRequest |
IndicationRemoteConfigResponse | ConfigResponse |
IndicationFreeExtraOptions | FreeExtraOptions |
IndicationRemoteDisconnect | 中斷連線 |
IndicationRecvPacket | RecvPacket |
對於 SCO 連線, SCO 回呼函 式接受三個自變數:
為 SCO 連線定義的內容。 在 BRB_SCO_REGISTER_SERVER 要求的情況下,此內容是在要求所傳遞之 _BRB_SCO_REGISTER_SERVER 結構的 IndicationCallbackContext 成員中傳遞的值。 在 BRB_SCO_OPEN_CHANNEL 或BRB_SCO_OPEN_CHANNEL_RESPONSE要求的情況下,此內容是在要求所傳遞 之 the_BRB_SCO_OPEN_CHANNEL結構的 CallbackContext 成員中傳遞的值。
來自 SCO_INDICATION_CODE 列舉的值,指出傳入 SCO 連線或綁定狀態變更通知的類型。
SCO_INDICATION_PARAMETERS 結構的指標,其中包含與通知事件相關聯的參數。
在 SCO 回呼函式的指示參數中傳遞的值會指定配置檔驅動程式應該使用之 Parameters 參數之 Parameters 等位中的等位成員。
如果 指示 參數的值等於... | ...使用 Parameters 參數的下列等位成員 |
---|---|
ScoIndicationRemoteConnect | [連接] |
ScoIndicationRemoteDisconnect | 中斷連線 |
處理 隨插即用 移除 IRP
配置文件驅動程式應該將所有 IRP_MN_SURPRISE_REMOVAL IRP 向下傳遞,以便立即由藍牙驅動程式堆疊處理。 請勿嘗試關閉任何開啟的通道,作為處理意外移除 IRP 的一部分。 在收到意外移除 IRP 之後,請勿建置並傳送任何傳送數據至基礎無線電的進一步 BRB。 不過,配置檔驅動程式可以在處理意外移除 IRP 時執行其他清除。
在藍牙驅動程式堆疊收到意外移除 IRP 之後,它會將 ScoIndicationRemoteDisconnect 傳遞給設定文件驅動程式在設定文件驅動程式建置並傳送BRB_SCO_OPEN_CHANNEL或BRB_SCO_OPEN_CHANNEL_RESPONSE要求時所指定的 SCO 回呼函式,以關閉目前開啟的任何 SCO 信道。 同樣地,當配置文件驅動程式建置並傳送BRB_L2CA_OPEN_CHANNEL或BRB_L2CA_OPEN_CHANNEL_RESPONSE要求時,藍牙驅動程式會將IndicationRemoteDisconnect 傳遞至配置文件驅動程式所指定的 L2CAP 回呼函式,以關閉目前開啟的任何 L2CAP 通道。
處理 IRP_MN_REMOVE_DEVICE IRP 時,配置檔驅動程式應該取消註冊所有伺服器。 若要取消註冊 SCO 伺服器,配置檔驅動程式應該建置並傳送BRB_SCO_UNREGISTER_SERVER要求。 若要取消註冊 L2CAP 伺服器,配置檔驅動程式應該建置並傳送 BRB_L2CA_UNREGISTER_SERVER 要求。