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