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
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 |