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 呼び出しは、これらの値を参照として渡します。 変数 hr
は HRESULT 型で、変数 pEnumerator
はデバイス列挙子オブジェクトの IMMDeviceEnumerator インターフェイスへのポインターです。 IMMDeviceEnumerator には、オーディオ エンドポイント デバイスを列挙するためのメソッドが用意されています。 __uuidof 演算子、CoCreateInstance 関数、CLSCTX_Xxx 定数については、Windows SDK のドキュメントを参照してください。
クライアントは、IMMDeviceEnumerator インターフェイスを通じて、MMDevice API 内の他のインターフェイスへの参照を取得することができます。 MMDevice API は、次のインターフェイスを実装します。
Interface | 説明 |
---|---|
IMMDevice | オーディオ デバイスを表します。 |
IMMDeviceCollection | オーディオ デバイスのコレクションを表します。 |
IMMDeviceEnumerator | オーディオ デバイスを列挙するためのメソッドを提供します。 |
IMMEndpoint | オーディオ エンドポイント デバイスを表します。 |
さらに、オーディオ エンドポイント デバイスの状態変更の通知を必要とする MMDevice API のクライアントは、次のインターフェイスを実装する必要があります。
Interface | 説明 |
---|---|
IMMNotificationClient | オーディオ エンドポイント デバイスが追加または削除されたとき、デバイスの状態またはプロパティが変更されたとき、またはデバイスに割り当てられている既定のロールに変更があったときに通知を生成します。 |
関連トピック