Поделиться через


IOCTL_BTHX_READ_HCI IOCTL (bthxddi.h)

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

Основной код

IRP_MJ_DEVICE_CONTROL

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

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

Status = WdfRequestRetrieveInputMemory(_Request, &ReqInMemory);

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

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

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

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

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

Status = WdfRequestRetrieveOutputMemory(_Request, &ReqOutMemory);

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

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

Элемент 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, Data) + MaxAclTransferInSize, где MaxAclTransferInSize — это значение в BTHX_CAPABILITIES, возвращаемое драйвером транспорта с IOCTL_BTHX_QUERY_CAPABILITIES.

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

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

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

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

Замечания

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

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

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

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается начиная с Windows 8.
заголовка bthxddi.h
IRQL <= PASSIVE_LEVEL