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_GET_VOLUME_STATUS_UPDATE
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 の構造体」を参照してください。