蓝牙 HFP DDI IOCTL

Windows 8 引入了一组 I/O 控制代码 (IOCTL),作为 DDI 的一部分,这样音频驱动程序就可以与免提配置文件 (HFP) 类驱动程序配合使用来运行蓝牙音频旁路连接。

除非另有说明,否则以下内容对本节中的所有 IOCTL 均成立:

  • 如果请求成功,则 STATUS_BLOCK 结构的 Information 成员将设置为输出缓冲区的大小(以字节为单位)。 否则,Information 成员设置为零。 Status 成员设置为 NTSTATUS 值。

  • 所有 IOCTLS 都需要 IRQL <= PASSIVE_LEVEL。

  • 音频驱动程序应将 IOCTL 与 IRP_MJ_DEVICE_CONTROL 请求一起使用。

对于大多数 IOCTL 函数代码,当音频驱动程序初始化设备控制 IRP 以发送到 HFP 驱动程序时,音频驱动程序必须在 HFP 驱动程序的 IO_STACK_LOCATION 中初始化 FileObject 指针。 音频驱动程序通常通过调用 IoGetDeviceObjectPointer 来检索文件对象指针。

音频驱动程序可能会将其中许多请求发送到任意线程(换句话说,是“异步”请求)。 在这些情况下,音频驱动程序需要使用 IoAllocateIrp 方法生成 IRP 本身,并直接设置 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_SET_VOLUME

IOCTL_BTHHFP_MIC_GET_VOLUME_STATUS_UPDATE

IOCTL_BTHHFP_STREAM_OPEN

IOCTL_BTHHFP_STREAM_CLOSE

IOCTL_BTHHFP_STREAM_GET_STATUS_UPDATE

Windows 8.1 通过添加以下新 IOCTL 更新了一组 IOCTL:

IOCTL_BTHHFP_DEVICE_GET_DESCRIPTOR2

IOCTL_BTHHFP_DEVICE_GET_NRECDISABLE_STATUS_UPDATE

Windows 10 通过添加以下新 IOCTL 更新了一组 IOCTL:

IOCTL_BTHHFP_DEVICE_GET_CODEC_ID

有关使用这些 IOCTL 的结构的信息,请参阅蓝牙 HFP DDI 结构

蓝牙 HFP DDI 结构