IOCTL_BTHX_READ_HCI IOCTL (bthxddi.h)
IOCTL_BTHX_READ_HCI используется для чтения данных и событий Bluetooth ACL из транспортного слоя.
Основной код
Входной буфер
Драйверы профилей должны использовать 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 |