IOCTL_BTHX_READ_HCI IOCTL (bthxddi.h)

IOCTL_BTHX_READ_HCI используется для чтения данных и событий ACL Bluetooth с транспортного уровня.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Драйверы профилей должны использовать KMDF и метод WdfRequestRetrieveInputMemory для получения входных параметров. Например, чтобы получить выходной буфер, выполните следующие действия:

Status = WdfRequestRetrieveInputMemory(_Request, &ReqInMemory);

Дополнительные сведения см. в примерах WDK Bluetooth.

Длина входного буфера

Буфер описывает UCHAR, представляющий тип чтения. Длина буфера равна размеру UCHAR.

Выходной буфер

Драйверы профилей должны использовать KMDF и метод WdfRequestRetrieveOutputMemory для получения входных параметров. Например, чтобы получить выходной буфер, выполните следующие действия:

Status = WdfRequestRetrieveOutputMemory(_Request, &ReqOutMemory);

Дополнительные сведения см. в примерах WDK Bluetooth.

Длина выходного буфера

Элемент AssociatedIrp.SystemBuffer указывает на буфер, содержащий BTHX_HCI_READ_WRITE_CONTEXT структуру и дополнительные данные, связанные с объектом чтения. Буфер должен быть достаточно большим для хранения самого большого события или пакета данных ACL в зависимости от типа пакета.

Для пакета событий это FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Данные) +257, где 257 — это сумма 2-байтового заголовка события и 255-байтовых данных события.

Для пакета данных ACL это FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Данные) + MaxAclTransferInSize, где MaxAclTransferInSize — это значение в BTHX_CAPABILITIES, возвращаемое драйвером транспорта с IOCTL_BTHX_QUERY_CAPABILITIES.

Блок состояния

Для элемента Information структуры STATUS_BLOCK задается количество байтов возвращаемых данных.

Для элемента Status задано одно из значений в следующей таблице.

Значение состояния Описание
STATUS_SUCCESS IOCTL успешно завершен.
STATUS_CANCELLED IOCTL отменен.

Комментарии

Входной буфер указывает на тип считываемого пакета.

Выходной буфер указывает на BTHX_HCI_READ_WRITE_CONTEXT структуру, элемент DataLen которой указывает количество байтов в элементе Data . Для элемента Type необходимо задать то же значение, что и для типа входного пакета.

Элемент Information STATUS_BLOCK должен иметь значение FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Data) + DataLen.

Максимальный размер элемента Data для чтения списка ACL определяется параметром MaxAclTransferInSize, указанным в структуре BTHX_CAPABILITIES. Максимальный размер элемента Data для события составляет 255.

Этот IOCTL должен возвращать STATUS_SUCCESS только при нормальной работе. Ошибки, связанные с транспортом, не должны возвращаться. IOCTL должен возвращать STATUS_CANCELLED только в том случае, если этот IOCTL был отменен.

Требования

Требование Значение
Минимальная версия клиента Поддерживается начиная с Windows 8.
Верхняя часть bthxddi.h
IRQL <= PASSIVE_LEVEL