Compartilhar via


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

IRP_MJ_DEVICE_CONTROL

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