Compartir a través de


IOCTL_BTHX_READ_HCI IOCTL (bthxddi.h)

IOCTL_BTHX_READ_HCI se usa para leer los datos y eventos de ACL de Bluetooth de la capa de transporte.

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

Los controladores de perfil deben usar KMDF y su método WdfRequestRetrieveInputMemory para recuperar parámetros de entrada. Por ejemplo, para obtener el búfer de salida:

Status = WdfRequestRetrieveInputMemory(_Request, &ReqInMemory);

Para obtener más información, consulte los ejemplos de Bluetooth de WDK.

Longitud del búfer de entrada

El búfer describe un UCHAR que representa el tipo de lectura. La longitud del búfer es el tamaño del UCHAR.

Búfer de salida

Los controladores de perfil deben usar KMDF y su método WdfRequestRetrieveOutputMemory para recuperar parámetros de entrada. Por ejemplo, para obtener el búfer de salida:

Status = WdfRequestRetrieveOutputMemory(_Request, &ReqOutMemory);

Para obtener más información, consulte los ejemplos de Bluetooth de WDK.

Longitud del búfer de salida

El miembro AssociatedIrp.SystemBuffer apunta a un búfer que contiene una estructura de BTHX_HCI_READ_WRITE_CONTEXT y datos adicionales asociados a la lectura. El búfer debe ser lo suficientemente grande como para contener el evento más grande o el paquete de datos de ACL, en función de su tipo de paquete.

Para un paquete de eventos, es FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Datos) +257, donde 257 es la suma de un encabezado de evento de 2 bytes y datos de eventos de 255 bytes.

Para un paquete de datos de ACL, es FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Data) + MaxAclTransferInSize donde MaxAclTransferInSize es el valor en BTHX_CAPABILITIES que se devuelve del controlador de transporte con IOCTL_BTHX_QUERY_CAPABILITIES.

Bloque de estado

El miembro Information de la estructura STATUS_BLOCK se establece en el número de bytes de datos devueltos.

El miembro Status se establece en uno de los valores de la tabla siguiente.

Valor de estado Descripción
STATUS_SUCCESS El IOCTL se completó correctamente.
STATUS_CANCELLED Se ha cancelado el IOCTL.

Comentarios

El búfer de entrada apunta al tipo de paquete que se está leyendo.

El búfer de salida apunta a una estructura de BTHX_HCI_READ_WRITE_CONTEXT cuyo miembro DataLen especifica el número de bytes del miembro Data . El miembro Type debe establecerse en el mismo que el tipo de paquete Input.

El miembro Information del STATUS_BLOCK debe establecerse en FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Data) + DataLen.

El tamaño máximo del miembro Data para una lectura de ACL viene determinado por MaxAclTransferInSize, especificado en la estructura BTHX_CAPABILITIES. El tamaño máximo del miembro Data para un evento es 255.

Este IOCTL debe devolver STATUS_SUCCESS solo en funcionamiento normal. No se deben devolver errores específicos del transporte. El IOCTL debe devolver STATUS_CANCELLED solo si se ha cancelado este IOCTL.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite a partir de Windows 8.
Encabezado bthxddi.h
IRQL <= PASSIVE_LEVEL