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 インターフェイスを実装する場合、クライアントはデッドロックと未定義の動作を回避するために、次の規則を遵守する必要があります。 IMMNotificationClient インターフェイスを実装するコード例については、「デバイス イベント」を参照してください。

継承

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

関連項目

コア オーディオ インターフェイス

IMMDevice::GetId

IMMDeviceEnumerator::GetDevice

IMMDeviceEnumerator::RegisterEndpointNotificationCallback

IMMDeviceEnumerator::UnregisterEndpointNotificationCallback

MMDevice API