MMDevice API について

Windows マルチメディア デバイス (MMDevice) API を使用すると、オーディオ クライアントはオーディオ エンドポイント デバイスを検出して、その機能を判断し、それらのデバイスのドライバー インスタンスを作成可能になります。

ヘッダー ファイル Mmdeviceapi.h は、MMDevice API のインターフェイスを定義します。

MMDevice API は、複数のインターフェイスで構成されています。 その 1 つ目は、IMMDeviceEnumerator インターフェイスです。 MMDevice API のインターフェイスにアクセスするため、クライアントは、次のコード フラグメントに示すように、CoCreateInstance 関数を呼び出すことによって、デバイス列挙子オブジェクトの IMMDeviceEnumerator インターフェイスへの参照を取得します。

  const CLSID CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator);
  const IID IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator);
  hr = CoCreateInstance(
         CLSID_MMDeviceEnumerator, NULL,
         CLSCTX_ALL, IID_IMMDeviceEnumerator,
         (void**)&pEnumerator);

上記のコード フラグメントでは、CLSID_MMDeviceEnumerator と IID_IMMDeviceEnumerator は、MMDeviceEnumerator クラス オブジェクトと IMMDeviceEnumerator インターフェイスに属性としてアタッチされる GUID 値です。 CoCreateInstance 呼び出しは、これらの値を参照として渡します。 変数 hrHRESULT 型で、変数 pEnumerator はデバイス列挙子オブジェクトの IMMDeviceEnumerator インターフェイスへのポインターです。 IMMDeviceEnumerator には、オーディオ エンドポイント デバイスを列挙するためのメソッドが用意されています。 __uuidof 演算子、CoCreateInstance 関数、CLSCTX_Xxx 定数については、Windows SDK のドキュメントを参照してください。

クライアントは、IMMDeviceEnumerator インターフェイスを通じて、MMDevice API 内の他のインターフェイスへの参照を取得することができます。 MMDevice API は、次のインターフェイスを実装します。

Interface 説明
IMMDevice オーディオ デバイスを表します。
IMMDeviceCollection オーディオ デバイスのコレクションを表します。
IMMDeviceEnumerator オーディオ デバイスを列挙するためのメソッドを提供します。
IMMEndpoint オーディオ エンドポイント デバイスを表します。

 

さらに、オーディオ エンドポイント デバイスの状態変更の通知を必要とする MMDevice API のクライアントは、次のインターフェイスを実装する必要があります。

Interface 説明
IMMNotificationClient オーディオ エンドポイント デバイスが追加または削除されたとき、デバイスの状態またはプロパティが変更されたとき、またはデバイスに割り当てられている既定のロールに変更があったときに通知を生成します。

 

オーディオ エンドポイント デバイス

プログラミング リファレンス