estrutura _BRB_L2CA_OPEN_ENHANCED_CHANNEL (bthddi.h)
A estrutura _BRB_L2CA_OPEN_ENHANCED_CHANNEL é usada para abrir um canal L2CAP aprimorado para um dispositivo remoto ou enviar uma resposta para aceitar/rejeitar uma solicitação de conexão L2CAP avançada de entrada iniciada por um dispositivo remoto.
Sintaxe
struct _BRB_L2CA_OPEN_ENHANCED_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;
struct {
ULONG Flags;
L2CAP_RETRANSMISSION_AND_FLOW_CONTROL RetransmissionAndFlow;
} ModeConfig;
USHORT Fcs;
L2CAP_EXTENDED_FLOW_SPEC ExtendedFlowSpec;
USHORT ExtendedWindowSize;
} ConfigOut;
struct {
ULONG Flags;
L2CAP_CONFIG_VALUE_RANGE Mtu;
L2CAP_CONFIG_RANGE FlushTO;
} ConfigIn;
ULONG CallbackFlags;
PFNBTHPORT_INDICATION_CALLBACK_ENHANCED Callback;
PVOID CallbackContext;
PVOID ReferenceObject;
CHANNEL_CONFIG_RESULTS_ENHANCED OutResults;
CHANNEL_CONFIG_RESULTS_ENHANCED InResults;
UCHAR IncomingQueueDepth;
PVOID Reserved;
};
Membros
Hdr
Uma estrutura BRB_HEADER que contém informações sobre o BRB atual.
ChannelHandle
Identificador usado para identificar a conexão em uma conexão bem-sucedida. Ao enviar um BRB_L2CA_OPEN_CHANNEL, isso será preenchido quando o BRB for concluído. Ao enviar uma solicitação de BRB_L2CA_OPEN_CHANNEL_RESPONSE , isso deve ser preenchido pelo servidor antes de enviar o BRB. O valor atribuído deve ser INDICATION_PARAMETERS::ConnectionHandle
passado durante o IndicationRemoteConnect.
Response
Usado somente com BRB_L2CA_OPEN_CHANNEL_RESPONSE. Um dos valores de CONNECT_RSP_RESULT_Xxx é usado.
Se o BRB retornar com uma status de STATUS_REQUEST_NOT_ACCEPTED, a Resposta conterá a resposta negativa do host remoto.
ResponseStatus
Se Response for igual a CONNECT_RSP_RESULT_PENDING, esse campo será válido. Um dos valores de CONNECT_RSP_STATUS_XXX é usado.
Psm
O Protocolo/Multiplexer de Serviço (PSM) que o canal usa para se conectar ao dispositivo remoto. Quando usado com uma solicitação de BRB_L2CA_OPEN_ENHANCED_CHANNEL , esse membro é definido como um campo de entrada. Quando usado com uma solicitação BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE , esse membro é usado como um campo de saída.
ChannelFlags
Sinalizadores que especificam os requisitos para o canal a ser aberto. Os valores de sinalizador válidos são listados na tabela a seguir:
Sinalizador | Descrição |
---|---|
CF_LINK_AUTHENTICATED | O link deve ser autenticado. |
CF_LINK_ENCRYPTED | O link deve ser criptografado. Definir esse sinalizador também define o sinalizador CF_LINK_AUTHENTICATED. |
CF_LINK_SUPPRESS_PIN | O driver de perfil indica sua preferência de que os usuários não sejam solicitados a fornecer um PIN. |
BtAddress
O endereço Bluetooth do dispositivo para o qual a conexão se destina.
ConfigOut
A subestrutura que contém as configurações de parâmetro para uma BRB_L2CA_OPEN_ENHANCED_CHANNEL BRB enviada a um dispositivo remoto.
ConfigOut.Flags
Sinalizadores que especificam os requisitos para o canal a ser aberto. Os valores de sinalizador válidos são listados na tabela a seguir:
Sinalizador | Descrição |
---|---|
CF_LINK_AUTHENTICATED | O link deve ser autenticado. |
CF_LINK_ENCRYPTED | O link deve ser criptografado. Definir esse sinalizador também define o sinalizador CF_LINK_AUTHENTICATED. |
CF_LINK_SUPPRESS_PIN | O driver de perfil indica sua preferência de que os usuários não sejam solicitados a fornecer um PIN. |
CFG_ENHANCED | Especifica que a estrutura ModeConfig é válida. |
CFG_FCS | Especifica que o valor fcs é válido. |
ConfigOut.Mtu
O intervalo de MTUs (unidades de transferência de mensagens) que é usado para negociar o tamanho da metade de saída do canal.
ConfigOut.FlushTO
O intervalo de valores possíveis a serem usados para o tempo limite de liberação para a metade de saída do canal.
ConfigOut.Flow
Reservado para uso futuro. Não use.
ConfigOut.LinkTO
O tempo limite do link do Gerenciador de Link.
ConfigOut.NumExtraOptions
O número de itens de matriz contidos no membro ExtraOptions . Esse valor deve ser zero para a maioria dos clientes.
ConfigOut.ExtraOptions
Opções extras. Esse valor deve ser zero para a maioria dos clientes.
ConfigOut.LocalQos
Reservado para uso futuro. Não use.
ConfigOut.LocalQos.ServiceType
Reservado para uso futuro. Não use.
ConfigOut.LocalQos.Latency
Reservado para uso futuro. Não use.
ConfigOut.ModeConfig
Especifica o tipo de canal L2CAP que está sendo aberto. Essa estrutura só será válida se CFG_ENHANCED sinalizador for especificado.
ConfigOut.ModeConfig.Flags
Especifica o tipo de modo de canal L2CAP solicitado.
Sinalizador | Descrição |
---|---|
CM_BASIC | Abra um canal de modo básico. |
CM_RETRANSMISSION_AND_FLOW | Abra um canal avançado no modo de retransmissão. |
CM_STREAMING | Abra um canal de modo de streaming. |
ConfigOut.ModeConfig.RetransmissionAndFlow
Especifica as opções para modos de CM_RETRANSMISSION_AND_FLOW e CM_STREAMING. Essa estrutura deverá ser zero se apenas CM_BASIC for especificado no membro Flags .
O submembro Mode de RetransmissionAndFlow deve ser definido como 0. Use o submember ModeConfig de RetransmissionAndFlow para especificar o tipo de canal a ser aberto.
ConfigOut.Fcs
Especifica se o FCS deve ser usado para o canal L2CAP aprimorado. Esse valor será válido somente se CM_RETRANSMISSION_AND_FLOW ou CM_STREAMING sinalizador for especificado no membro Flags .
ConfigOut.ExtendedFlowSpec
Não há suporte.
ConfigOut.ExtendedWindowSize
Não há suporte.
ConfigIn
A substrutura que contém as configurações de parâmetro para validar os BRBs de entrada BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE que são enviados de um dispositivo remoto.
ConfigIn.Flags
Sinalizadores que especificam os requisitos para o canal a ser aberto. Os valores de sinalizador válidos são listados na tabela a seguir:
Sinalizador | Descrição |
---|---|
CF_LINK_AUTHENTICATED | O link deve ser autenticado. |
CF_LINK_ENCRYPTED | O link deve ser criptografado. Definir esse sinalizador também define o sinalizador CF_LINK_AUTHENTICATED. |
CF_LINK_SUPPRESS_PIN | O driver de perfil indica sua preferência de que os usuários não sejam solicitados a fornecer um PIN. |
ConfigIn.Mtu
O intervalo de MTUs (unidades de transferência de mensagens) que é usado para negociar o tamanho da metade de entrada do canal.
ConfigIn.FlushTO
O intervalo de valores possíveis a serem usados para o tempo limite de liberação para a metade de entrada do canal.
CallbackFlags
Um sinalizador que especifica quais eventos devem gerar uma rotina de retorno de chamada para notificar o driver de perfil de que o evento ocorreu. Os valores de sinalizador válidos estão contidos na tabela a seguir.
Sinalizador | Descrição |
---|---|
CALLBACK_CONFIG_EXTRA_IN | Se definida, a rotina de retorno de chamada será chamada quando a solicitação de configuração do dispositivo remoto contiver opções extras. Se não estiver definido, as opções de configuração extras serão rejeitadas como opções desconhecidas. Esse sinalizador é usado com brbs BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE . |
CALLBACK_CONFIG_EXTRA_OUT | Se definida, a rotina de retorno de chamada será chamada quando o dispositivo remoto rejeitar uma opção de configuração extra de uma solicitação de BRB_L2CA_OPEN_ENHANCED_CHANNEL . Se não estiver definido e o dispositivo remoto rejeitar a solicitação de configuração devido a uma opção extra, a conexão será fechada. |
CALLBACK_CONFIG_QOS | Se definida, a rotina de retorno de chamada será chamada quando um dispositivo remoto enviar uma solicitação de configuração que contenha um valor QOS. Se esse sinalizador não estiver definido e o dispositivo remoto enviar parâmetros QOS em uma solicitação de configuração ou rejeitar os parâmetros de QOS solicitados do driver de perfil, a conexão será desconectada. |
CALLBACK_DISCONNECT | Se definida, a rotina de retorno de chamada será chamada quando um dispositivo remoto se desconectar do canal L2CAP aprimorado. |
CALLBACK_RECV_PACKET | Se definida, a rotina de retorno de chamada será chamada quando o driver de perfil receber um pacote L2CAP avançado de entrada. |
Callback
A Função de Retorno de Chamada L2CAP Aprimorada implementada pelo driver de perfil, que a pilha de driver bluetooth deve chamar para notificar o driver de perfil sobre quaisquer alterações na conexão L2CAP aprimorada.
CallbackContext
O contexto a ser passado para a função de retorno de chamada especificada no membro de retorno de chamada. O driver de perfil define esse valor.
ReferenceObject
Um ponteiro para um objeto a ser passado para ObReferenceObject e ObDereferenceObject para o qual manter uma contagem de referência.
OutResults
Uma estrutura CHANNEL_CONFIG_RESULTS_ENHANCED que contém parâmetros de configuração negociados para a solicitação de saída.
InResults
Uma estrutura CHANNEL_CONFIG_RESULTS_ENHANCED que contém parâmetros de configuração negociados para a solicitação de entrada.
IncomingQueueDepth
Especifica o comprimento da fila de entrada em MTUs (unidades de transferência de mensagens).
Reserved
Membro reservado. Não use.
Resposta
Esse membro é usado como um parâmetro de entrada para uma solicitação de BRB_L2CA_OPEN_ENHANCED_CHANNEL e um parâmetro de saída para a solicitação de BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE .
Para uma solicitação de BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE , esse membro contém um sinalizador que indica a resposta do driver de perfil ao dispositivo remoto. Os valores de sinalizador válidos estão contidos na tabela a seguir.
Sinalizador | Descrição |
---|---|
CONNECT_RSP_RESULT_NO_RESOURCES | O driver de perfil recusou a conexão devido à falta de recursos. |
CONNECT_RSP_RESULT_PENDING | O driver de perfil está ocupado no momento e não pode aceitar a conexão. Tente novamente depois. |
CONNECT_RSP_RESULT_PSM_NEG | O driver de perfil recusou a conexão porque o PSM não tem suporte. |
CONNECT_RSP_RESULT_SECURITY_BLOCK | O driver de perfil recusou a conexão por motivos de segurança. |
CONNECT_RSP_RESULT_SUCCESS | O driver de perfil aceitou a conexão. |
Para a BRB_L2CA_OPEN_ENHANCED_CHANNEL BRB, esse membro contém a resposta do dispositivo remoto ao qual o driver de perfil tentou se conectar. Os valores de sinalizador válidos estão contidos na tabela a seguir.
Sinalizador | Descrição |
---|---|
CONNECT_RSP_RESULT_NO_RESOURCES | O dispositivo remoto recusou a conexão devido à falta de recursos. |
CONNECT_RSP_RESULT_PSM_NEG | O dispositivo remoto recusou a conexão. |
CONNECT_RSP_RESULT_SECURITY_BLOCK | O dispositivo remoto recusou a conexão por motivos de segurança. |
CONNECT_RSP_RESULT_SUCCESS | O dispositivo remoto aceitou a conexão. |
ResponseStatus
Se durante uma chamada para o BRB BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE o membro Response estiver definido como CONNECT_RSP_RESULT_PENDING, esse membro será válido e conterá um dos seguintes valores:
- CONNECT_RSP_STATUS_AUTHENTICATION_PENDING
- CONNECT_RSP_STATUS_AUTHORIZATION_PENDING
- CONNECT_RSP_STATUS_NO_INFORMATION
Comentários
Os drivers de perfil podem usar CM_BASIC | CM_RETRANSMISSION_AND_FLOW
modos ou CM_BASIC | CM_STREAMING
para o membro Flags . Isso indica abrir um modo de retransmissão aprimorado ou um canal de modo de streaming, se possível, e se não voltar para o canal de modo básico.
Não há suporte para um valor de CM_RETRANSMISSION_AND_FLOW | CM_STREAMING
.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Versões:_Supported em Windows 8 e versões posteriores do Windows |
Cabeçalho | bthddi.h (inclua Bthddi.h) |