共用方式為


_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 指示RemoteConnect 期間傳入的值。

Response

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

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

ResponseStatus

如果 回應 等於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

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

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

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

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 要求順利完成,OutResults 中提供新建立連線的各種資訊,InResults 成員。 OutResults 會指定通道輸出一半的參數,InResults 指定通道輸入一半的參數。

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

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

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

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

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

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

配置文件驅動程式會指定是否應該接受連接,方法是將適當的值儲存在此結構的 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