Bluetooth HFP DDI IOCTLs

Windows 8 では、Bluetooth オーディオ バイパス接続を操作するために、オーディオ ドライバーがハンズフリー プロファイル (HFP) クラス ドライバーと連携することを可能にする DDI の一部として、I/O コントロール コード (IOCTL) のセットが導入されています。

特に明記されていない限り、このセクションのすべての IOCTL に対して次のことが当てはまります。

  • 要求が成功した場合、STATUS_BLOCK 構造体の Information メンバーは、出力バッファーのサイズ (バイト単位) に設定されます。 それ以外の場合は、Information メンバーは 0 に設定されます。 Status メンバーは NTSTATUS 値に設定されます。

  • すべての IOCTL では IRQL <= PASSIVE_LEVEL である必要があります。

  • オーディオ ドライバーは、IRP_MJ_DEVICE_CONTROL 要求で IOCTL を使用する必要があります。

ほとんどの IOCTL 関数コードでは、オーディオ ドライバーは、HFP ドライバーに送信するデバイス コントロール IRP を初期化するときに、HFP ドライバーの IO_STACK_LOCATION で FileObject ポインターを初期化する必要があります。 オーディオ ドライバーは通常、IoGetDeviceObjectPointer を呼び出すことによってファイル オブジェクト ポインターを取得します。

オーディオ ドライバーは、これらの要求の多くを任意のスレッド (つまり、"非同期" 要求) で送信する可能性があります。 このような場合、オーディオ ドライバーは、IoAllocateIrp メソッドを使用して IRP 自体をビルドし、IoBuildDeviceIoControlRequest を呼び出すのではなく、IRP のフィールドを直接設定する必要があります。

次のトピックでは、これらの 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 で動作する構造体の詳細については、「Bluetooth HFP DDI の構造体」を参照してください。

Bluetooth HFP DDI の構造体