IOCTL_BTHX_READ_HCI IOCTL (bthxddi.h)
IOCTL_BTHX_READ_HCI é usado para ler dados e eventos de ACL Bluetooth da camada de transporte.
Código principal
Buffer de entrada
Os drivers de perfil devem usar KMDF e seu método WdfRequestRetrieveInputMemory para recuperar parâmetros de entrada. Por exemplo, para obter o buffer de saída:
Status = WdfRequestRetrieveInputMemory(_Request, &ReqInMemory);
Para obter mais informações, consulte os exemplos de Bluetooth do WDK.
Comprimento do buffer de entrada
O buffer descreve um UCHAR que representa o tipo de leitura. O comprimento do buffer é o tamanho do UCHAR.
Buffer de saída
Os drivers de perfil devem usar KMDF e seu método WdfRequestRetrieveOutputMemory para recuperar parâmetros de entrada. Por exemplo, para obter o buffer de saída:
Status = WdfRequestRetrieveOutputMemory(_Request, &ReqOutMemory);
Para obter mais informações, consulte os exemplos de Bluetooth do WDK.
Comprimento do buffer de saída
O membro AssociatedIrp.SystemBuffer aponta para um buffer que contém uma estrutura BTHX_HCI_READ_WRITE_CONTEXT e dados adicionais associados à leitura. O buffer deve ser grande o suficiente para conter o maior evento ou pacote de dados acl, dependendo de seu tipo de pacote.
Para um pacote de eventos, é FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Dados) +257, em que 257 é a soma de um cabeçalho de evento de 2 bytes e dados de evento de 255 bytes.
Para um pacote de dados de ACL, é FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Data) + MaxAclTransferInSize, em que MaxAclTransferInSize é o valor em BTHX_CAPABILITIES retornado do driver de transporte com IOCTL_BTHX_QUERY_CAPABILITIES.
Bloco de status
O membro Information da estrutura STATUS_BLOCK é definido como o número de bytes de dados retornados.
O membro Status é definido como um dos valores na tabela a seguir.
Valor de status | Descrição |
---|---|
STATUS_SUCCESS | O IOCTL foi concluído com êxito. |
STATUS_CANCELLED | O IOCTL foi cancelado. |
Comentários
O buffer de entrada aponta para o tipo de pacote que está sendo lido.
O buffer de saída aponta para uma estrutura BTHX_HCI_READ_WRITE_CONTEXT cujo membro DataLen especifica o número de bytes no membro Data . O membro Type deve ser definido como o mesmo que o Tipo de pacote de entrada.
O membro Information do STATUS_BLOCK deve ser definido como FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Data) + DataLen.
O tamanho máximo do membro Data para uma leitura de ACL é determinado por MaxAclTransferInSize, especificado na estrutura BTHX_CAPABILITIES. O tamanho máximo do membro Data para um evento é 255.
Esse IOCTL deve retornar STATUS_SUCCESS somente em operação normal. Erros específicos do transporte não devem ser retornados. O IOCTL só deverá retornar STATUS_CANCELLED se este IOCTL tiver sido cancelado.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte a partir do Windows 8. |
Cabeçalho | bthxddi.h |
IRQL | <= PASSIVE_LEVEL |