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 は、次のインターフェイスを実装します。

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

 

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

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

 

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

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