共用方式為


_BRB_L2CA_OPEN_CHANNEL 結構 (bthddi.h)

_BRB_L2CA_OPEN_CHANNEL結構描述要開啟至遠端裝置的 L2CAP 通道,或從配置檔驅動程式接受或拒絕遠端裝置起始的傳入 L2CAP 連線要求回應。

語法

struct _BRB_L2CA_OPEN_CHANNEL {
  BRB_HEADER                     Hdr;
  L2CAP_CHANNEL_HANDLE           ChannelHandle;
  union {
    struct {
      USHORT Response;
      USHORT ResponseStatus;
    };
    USHORT Psm;
  };
  ULONG                          ChannelFlags;
  BTH_ADDR                       BtAddress;
  struct {
    ULONG                    Flags;
    L2CAP_CONFIG_VALUE_RANGE Mtu;
    L2CAP_CONFIG_VALUE_RANGE FlushTO;
    L2CAP_FLOWSPEC           Flow;
    USHORT                   LinkTO;
    ULONG                    NumExtraOptions;
    PL2CAP_CONFIG_OPTION     ExtraOptions;
    struct {
      UCHAR ServiceType;
      ULONG Latency;
    } LocalQos;
  } ConfigOut;
  struct {
    ULONG                    Flags;
    L2CAP_CONFIG_VALUE_RANGE Mtu;
    L2CAP_CONFIG_RANGE       FlushTO;
  } ConfigIn;
  ULONG                          CallbackFlags;
  PFNBTHPORT_INDICATION_CALLBACK Callback;
  PVOID                          CallbackContext;
  PVOID                          ReferenceObject;
  CHANNEL_CONFIG_RESULTS         OutResults;
  CHANNEL_CONFIG_RESULTS         InResults;
  UCHAR                          IncomingQueueDepth;
};

成員

Hdr

包含目前 BRB 相關信息 的BRB_HEADER 結構。

ChannelHandle

用於在成功連接時識別連線的句柄。 傳送 BRB_L2CA_OPEN_CHANNEL時,當 BRB 完成時,就會填入此專案。 傳送 BRB_L2CA_OPEN_CHANNEL_RESPONSE時,必須先由伺服器填入此動作,才能傳送 BRB。 指派的值應該是 INDICATION_PARAMETERS::ConnectionHandle 在 IndicationRemoteConnect 期間傳入的值。

Response

只能搭配 BRB_L2CA_OPEN_CHANNEL_RESPONSE使用。 使用其中一個CONNECT_RSP_RESULT_Xxx值。

如果 BRB 傳回狀態為 STATUS_REQUEST_NOT_ACCEPTED, 則 Response 會包含來自遠端主機的負回應。

ResponseStatus

如果 Response 等於 CONNECT_RSP_RESULT_PENDING,則此欄位有效。 使用其中一個CONNECT_RSP_STATUS_XXX值。

Psm

通訊協定/服務多任務器 (PSM) 通道用來連線到遠端裝置。 搭配 BRB_L2CA_OPEN_CHANNEL 要求使用時,此成員會設定為輸入欄位。 搭配 BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求使用時,此成員會當做輸出字段使用。

ChannelFlags

旗標,指定要開啟之通道的需求。 下表列出有效的旗標值:

旗標 描述
CF_LINK_AUTHENTICATED 必須驗證連結。
CF_LINK_ENCRYPTED 必須加密連結。 設定此旗標也會設定CF_LINK_AUTHENTICATED旗標。
CF_LINK_SUPPRESS_PIN 配置文件驅動程式指出使用者未提示輸入 PIN 的喜好設定。

BtAddress

線上預定之裝置的藍牙位址。

ConfigOut

子結構,其中包含傳送至遠端裝置 之BRB_L2CA_OPEN_CHANNEL BRB 的參數設定。

ConfigOut.Flags

旗標,指定要開啟之通道的需求。 下表列出有效的旗標值:

旗標 描述
CF_LINK_AUTHENTICATED 必須驗證連結。
CF_LINK_ENCRYPTED 必須加密連結。 設定此旗標也會設定CF_LINK_AUTHENTICATED旗標。
CF_LINK_SUPPRESS_PIN 配置文件驅動程式指出使用者未提示輸入 PIN 的喜好設定。

ConfigOut.Mtu

訊息傳輸單位的範圍 (MTU) ,用來交涉通道輸出的一半大小。

ConfigOut.FlushTO

要用於通道輸出一半之排清逾時的可能值範圍。

ConfigOut.Flow

保留供未來使用。 請勿使用。

ConfigOut.LinkTO

連結管理員連結逾時。

ConfigOut.NumExtraOptions

ExtraOptions 成員中包含的數位項目數目。 對大部分用戶端而言,此值應該是零。

ConfigOut.ExtraOptions

ExtraOptions 成員中包含的數位項目數目。 對大部分用戶端而言,此值應該是零。

ConfigOut.LocalQos

保留供未來使用。 請勿使用。

ConfigOut.LocalQos.ServiceType

保留供未來使用。 請勿使用。

ConfigOut.LocalQos.Latency

保留供未來使用。 請勿使用。

ConfigIn

包含參數設定的子結構,用來驗證從遠端裝置傳送的內送 BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB。

ConfigIn.Flags

旗標,指定要開啟之通道的需求。 下表列出有效的旗標值:

旗標 描述
CF_LINK_AUTHENTICATED 必須驗證連結。
CF_LINK_ENCRYPTED 必須加密連結。 設定此旗標也會設定CF_LINK_AUTHENTICATED旗標。
CF_LINK_SUPPRESS_PIN 配置文件驅動程式指出使用者未提示輸入 PIN 的喜好設定。

ConfigIn.Mtu

訊息傳輸單位的範圍 (MTU) ,用來交涉通道輸出的一半大小。

ConfigIn.FlushTO

要用於通道輸出一半之排清逾時的可能值範圍。

CallbackFlags

旗標,指定哪些事件應該產生回呼例程,以通知配置檔驅動程式已發生事件。 下表包含有效的旗標值。

旗標 描述
CALLBACK_CONFIG_EXTRA_IN 如果設定,當遠端裝置的組態要求包含額外的選項時,將會呼叫回呼例程。 如果未設定,額外的組態選項將會拒絕為未知的選項。 此旗標會與 BRB_L2CA_OPEN_CHANNEL_RESPONSE BR 搭配使用。
CALLBACK_CONFIG_EXTRA_OUT 如果設定,當遠端裝置拒絕來自BRB_L2CA_OPEN_CHANNEL要求的額外組態選項時,將會呼叫回呼例程。 如果未設定,且遠端裝置因為額外選項而拒絕設定要求,將會關閉連線。
CALLBACK_CONFIG_QOS 如果設定,當遠端裝置傳送包含 QOS 值的組態要求時,將會呼叫回呼例程。 如果未設定此旗標,而且遠端裝置會在設定要求中傳送 QOS 參數,或拒絕配置檔驅動程式所要求的 QOS 參數,則會中斷連線。
CALLBACK_DISCONNECT 如果設定,當遠端裝置與 L2CAP 通道中斷連線時,將會呼叫回呼例程。
CALLBACK_RECV_PACKET 如果設定,當配置文件驅動程式收到傳入 L2CAP 封包時,將會呼叫回呼例程。

Callback

配置文件驅動程式所實作的 L2CAP 回呼函 式,藍牙驅動程式堆疊應該呼叫 以通知配置檔驅動程式有關 L2CAP 連線的任何變更。

CallbackContext

要傳遞至 Callback 成員中所指定回呼函式的內容。 配置檔案驅動程式會定義此值。

ReferenceObject

要傳遞至 ObReferenceObjectObDereferenceObject 之物件的指標,要維護其參考計數。

OutResults

CHANNEL_CONFIG_RESULTS結構,其中包含輸出要求的組態參數。

InResults

包含輸入要求之組態參數的CHANNEL_CONFIG_RESULTS結構。

IncomingQueueDepth

指定訊息傳輸單位中的傳入佇列長度, (MTU) 。

回應

此成員會作為 BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求的輸入參數,以及 BRB_L2CA_OPEN_CHANNEL 要求的輸出參數。

對於 BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求,此成員會保留旗標,指出配置檔驅動程式對遠端裝置的回應。 下表包含有效的旗標值。

旗標 描述
CONNECT_RSP_RESULT_NO_RESOURCES 配置檔驅動程序因為缺少資源而拒絕連線。
CONNECT_RSP_RESULT_PENDING 配置文件驅動程式目前忙碌中,無法接受連線。 請稍後再試一次。
CONNECT_RSP_RESULT_PSM_NEG 配置檔驅動程序因為不支援 PSM 而拒絕連線。
CONNECT_RSP_RESULT_SECURITY_BLOCK 配置檔驅動程式基於安全性理由拒絕連線。
CONNECT_RSP_RESULT_SUCCESS 配置檔驅動程式已接受連線。

針對 BRB_L2CA_OPEN_CHANNEL BRB,此成員包含配置檔驅動程式嘗試連線的遠端裝置回應。 下表包含有效的旗標值。

旗標 描述
CONNECT_RSP_RESULT_NO_RESOURCES 遠端裝置因為資源不足而拒絕連線。
CONNECT_RSP_RESULT_PSM_NEG 遠端裝置拒絕連線。
CONNECT_RSP_RESULT_SECURITY_BLOCK 遠端裝置基於安全性考慮拒絕連線。
CONNECT_RSP_RESULT_SUCCESS 遠端裝置已接受連線。

ResponseStatus

如果在呼叫 BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB 期間, 回應 成員會設定為 CONNECT_RSP_RESULT_PENDING,則此成員有效且包含下列其中一個值:

  • CONNECT_RSP_STATUS_AUTHENTICATION_PENDING
  • CONNECT_RSP_STATUS_AUTHORIZATION_PENDING
  • CONNECT_RSP_STATUS_NO_INFORMATION

備註

若要開啟 L2CAP 通道,配置檔驅動程式應該建置並傳送BRB_L2CA_OPEN_CHANNEL要求。

作為用戶端的配置檔驅動程式會指定目的地位址、PSM 和各種組態參數。

如果 BRB_L2CA_OPEN_CHANNEL 要求順利完成, 則 OutResultsInResults 成員中會提供新建立連線的各種資訊。 OutResults 會指定通道的輸出半部參數, InResults 會指定通道輸入半部的參數。

在此結構中傳遞的數位組態參數,例如 Mtu 成員,是用來與遠端無線電交涉的範圍。 客戶端應該盡可能提供廣泛的功能,以增加成功通道交涉的機會。 指定大於基本藍牙最小 MTU 大小的最小 MTU 大小,只有在絕對必要時才應該完成。 如果交涉失敗,連線將會失敗。

配置文件驅動程式必須配置記憶體來儲存儲存在 ExtraOptions 成員中的陣列,而且除非回 呼成員中 定義的回呼函式傳回具有 IndicationFreeExtraOptions 通知的回呼函式 ,否則 不應釋放此記憶體,INDICATION_CODE在 指示 參數中傳遞的值。

_BRB_L2CA_OPEN_CHANNEL 結構的 IncomingQueueDepth 成員會指定藍牙驅動程式堆疊在連線上接收並排入佇列的最大 MTU 數目,然後再開始捨棄它們。 將此值設定為非常小的數位會增加數據遺失的機會,而將此值設定為非常大量的可能會增加記憶體使用量。 將此成員設定為10是有效的入侵。

若要接受或拒絕遠端裝置起始的傳入 L2CAP 連線要求,配置檔驅動程式應該 建置並傳送 BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求。

當藍牙驅動程式堆棧呼叫配置文件驅動程式的 L2CAP 回呼函式,並在回呼函式的指示參數中傳遞 IndicationRemoteConnect 時,配置文件驅動程式應該建置並傳送BRB_L2CA_OPEN_CHANNEL_RESPONSE要求。

根據此結構的 Response 成員值,藍牙驅動程式堆棧接著會接受或拒絕連線要求。

配置文件驅動程式會指定是否應該接受連線,方法是將此結構的 Response 成員儲存適當的值。

收到CONNECT_RSP_RESULT_PENDING回應時,連線客戶端應該重設其連線定時器,並等候更新的連線回應訊息。 呼叫 BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB 的配置檔驅動程式 其中 回應 成員設定為 CONNECT_RSP_RESULT_PENDING 應該會立即發出具有更新連線值的額外 BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB。 更新的值可以是 回應 成員中所述的任何狀態代碼,包括重新傳送CONNECT_RSP_RESULT_PENDING值。

配置文件驅動程式必須配置記憶體來儲存儲存在 ExtraOptions 成員中的陣列,而且在 Callback 成員中定義的 呼函式傳回時,必須先使用 IndicationFreeExtraOptions 通知傳回的回呼函式 ,INDICATION_CODE指示 參數中傳遞的值。

規格需求

需求
最低支援的用戶端 Windows Vista 和更新版本中的版本:_Supported。
標頭 bthddi.h (包含 Bthddi.h)

另請參閱

BRB_HEADER

BRB_L2CA_OPEN_CHANNEL

BRB_L2CA_OPEN_CHANNEL_RESPONSE

BRB_L2CA_REGISTER_SERVER

CHANNEL_CONFIG_RESULTS

INDICATION_CODE

INDICATION_PARAMETERS

L2CAP 回呼函式

L2CAP_CONFIG_OPTION

ObDereferenceObject

ObReferenceObject