Bluetooth HFP DDI IOCTLs
Windows 8 представляет набор кодов управления вводом-выводом (IOCTL) в составе DDI, который позволяет аудиодрайверу работать с драйвером класса HFP и управлять подключением bluetooth для обхода звука.
Если не указано иное, для всех ioCTL в этом разделе верно следующее:
Если запрос выполнен успешно, элементу Information структуры STATUS_BLOCK присваивается размер выходного буфера в байтах. В противном случае элементу Information присваивается нулевое значение. Для элемента Status задано значение NTSTATUS.
Для всех IOCTLS требуется IRQL <= PASSIVE_LEVEL.
Звуковой драйвер должен использовать ioCTL с запросом IRP_MJ_DEVICE_CONTROL.
Для большинства кодов функций IOCTL звуковой драйвер должен инициализировать указатель FileObject в IO_STACK_LOCATION для драйвера HFP, когда звуковой драйвер инициализирует IRP управления устройством для отправки драйверу HFP. Аудиодрайвер обычно извлекает указатель объекта файла, вызывая IoGetDeviceObjectPointer.
Звуковой драйвер, скорее всего, отправит многие из этих запросов в произвольный поток (другими словами, "асинхронный" запрос). В таких случаях звуковому драйверу потребуется создать сам IRP с помощью метода IoAllocateIrp и задать поля в IRP напрямую, а не вызывать IoBuildDeviceIoControlRequest.
В следующих разделах приведены дополнительные сведения об этих Windows 8 IOCTL.
IOCTL_BTHHFP_DEVICE_GET_DESCRIPTOR
IOCTL_BTHHFP_DEVICE_GET_VOLUMEPROPERTYVALUES
IOCTL_BTHHFP_DEVICE_GET_KSNODETYPES
IOCTL_BTHHFP_DEVICE_GET_CONTAINERID
IOCTL_BTHHFP_DEVICE_REQUEST_CONNECT
IOCTL_BTHHFP_DEVICE_REQUEST_DISCONNECT
IOCTL_BTHHFP_DEVICE_GET_CONNECTION_STATUS_UPDATE
IOCTL_BTHHFP_SPEAKER_SET_VOLUME
IOCTL_BTHHFP_SPEAKER_GET_VOLUME_STATUS_UPDATE
IOCTL_BTHHFP_MIC_GET_VOLUME_STATUS_UPDATE
IOCTL_BTHHFP_STREAM_GET_STATUS_UPDATE
Windows 8.1 обновил набор ioCTL, добавив следующие новые:
IOCTL_BTHHFP_DEVICE_GET_DESCRIPTOR2
IOCTL_BTHHFP_DEVICE_GET_NRECDISABLE_STATUS_UPDATE
Windows 10 обновил набор ioCTL, добавив следующий новый:
IOCTL_BTHHFP_DEVICE_GET_CODEC_ID
Сведения о структурах, которые работают с этими ioCTL, см. в разделе Структуры DDI Bluetooth HFP.