IMMNotificationClient インターフェイス (mmdeviceapi.h)
IMMNotificationClient インターフェイスは、オーディオ エンドポイント デバイスが追加または削除されたとき、エンドポイント デバイスの状態またはプロパティが変更されたとき、またはエンドポイント デバイスに割り当てられた既定のロールに変更がある場合に通知を提供します。 MMDevice API システム コンポーネントによって実装されるこのセクションの他のインターフェイスとは異なり、MMDevice API クライアントは IMMNotificationClient インターフェイスを実装します。 通知を受信するために、クライアントは IMMDeviceEnumerator::RegisterEndpointNotificationCallback メソッドにパラメーターとして IMMNotificationClient インターフェイス インスタンスへのポインターを渡します。
IMMNotificationClient インターフェイスを登録すると、クライアントは インターフェイスの メソッドを介してコールバックの形式でイベント通知を受け取ります。
IMMNotificationClient インターフェイスの各メソッドは、その入力パラメーターの 1 つとして、通知の件名であるオーディオ エンドポイント デバイスを識別するエンドポイント ID 文字列を受け取ります。 文字列は、システム内の他のすべてのオーディオ エンドポイント デバイスに関してデバイスを一意に識別します。 IMMNotificationClient インターフェイス実装のメソッドは、この文字列を不透明として扱う必要があります。 つまり、どのメソッドも、デバイスに関する情報を取得するために文字列の内容を解析しようとしないでください。 その理由は、文字列形式が未定義であり、MMDevice API システム モジュールの実装の 1 つから次の実装に変更される可能性があるためです。
クライアントは、 IMMNotificationClient メソッドの呼び出しで、入力パラメーターとして受け取るエンドポイント ID 文字列を 2 つの方法で使用できます。
- クライアントは、エンドポイント ID 文字列が識別するデバイスのインスタンスを作成できます。 クライアントはこれを行うには、 IMMDeviceEnumerator::GetDevice メソッドを呼び出し、エンドポイント ID 文字列を入力パラメーターとして指定します。
- クライアントは、エンドポイント ID 文字列と既存のデバイス インスタンスのエンドポイント ID 文字列を比較できます。 2 番目のエンドポイント ID 文字列を取得するために、クライアントはデバイス インスタンスの IMMDevice::GetId メソッドを呼び出します。 2 つの文字列が一致する場合は、同じデバイスを識別します。
- インターフェイスのメソッドは非ブロッキングである必要があります。 クライアントは、イベント コールバック中に同期オブジェクトを待機しないでください。
- デッド ロックを回避するために、クライアントは IMMNotificationClient メソッドの実装で IMMDeviceEnumerator::RegisterEndpointNotificationCallback または IMMDeviceEnumerator::UnregisterEndpointNotificationCallback を呼び出さないでください。
- クライアントは、イベント コールバック中に MMDevice API オブジェクトの最後の参照を解放しないでください。
継承
IMMNotificationClient インターフェイスは、IUnknown インターフェイスから継承されます。 IMMNotificationClient には、次の種類のメンバーもあります。
メソッド
IMMNotificationClient インターフェイスには、これらのメソッドがあります。
IMMNotificationClient::OnDefaultDeviceChanged OnDefaultDeviceChanged メソッドは、特定のデバイス ロールの既定のオーディオ エンドポイント デバイスが変更されたことをクライアントに通知します。 |
IMMNotificationClient::OnDeviceAdded OnDeviceAdded メソッドは、新しいオーディオ エンドポイント デバイスが追加されたことを示します。 |
IMMNotificationClient::OnDeviceRemoved OnDeviceRemoved メソッドは、オーディオ エンドポイント デバイスが削除されたことを示します。 |
IMMNotificationClient::OnDeviceStateChanged OnDeviceStateChanged メソッドは、オーディオ エンドポイント デバイスの状態が変更されたことを示します。 |
IMMNotificationClient::OnPropertyValueChanged OnPropertyValueChanged メソッドは、オーディオ エンドポイント デバイスに属するプロパティの値が変更されたことを示します。 |
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | mmdeviceapi.h |
関連項目
IMMDeviceEnumerator::GetDevice
IMMDeviceEnumerator::RegisterEndpointNotificationCallback