Windows Vista では、システムによってエンドポイント ID 文字列が生成され、システムで オーディオ エンドポイント デバイスが識別されます。 エンドポイント ID 文字列は、null で終わるワイド文字の文字列です。 特定のオーディオ エンドポイント デバイスのエンドポイント ID 文字列は、システム内のすべてのオーディオ エンドポイント デバイス間でデバイスを一意に識別します。
システムに 2 つ以上の同一のオーディオ アダプター デバイスが含まれている場合、対応するオーディオ エンドポイント デバイスのフレンドリ名は同じですが、各エンドポイント デバイスには一意のエンドポイント ID 文字列が含まれます。 エンドポイント デバイスのフレンドリ名を取得する方法の詳細については、「デバイスのプロパティのを参照してください。
オーディオ エンドポイント デバイスの IMMDevice インターフェイス インスタンスを取得した後、クライアントは IMMDevice::GetId メソッドを呼び出して、デバイスのエンドポイント ID 文字列を取得できます。 クライアントは、エンドポイント ID 文字列を使用して、後で、または別のプロセスで、IMMDeviceEnumerator::GetDevice メソッドを呼び出すことによって、オーディオ エンドポイント デバイスのインスタンスを作成できます。
クライアントは、オーディオ エンドポイント デバイスの状態が変化したときに通知を受信するように手配できます。 通知を受信するために、クライアントは IMMNotificationClient インターフェイスを実装し、そのインターフェイスを MMDevice API に登録します。 エンドポイント デバイスの状態が変わると、MMDevice API はクライアントの EDataFlow インターフェイスで適切なメソッドを呼び出します。 メソッドへの入力パラメーターの 1 つは、状態が変更されたエンドポイント デバイスを識別するエンドポイント ID 文字列です。 より詳しい情報については、EDataFlowを確認し、「Device Events」を参照してください。
DirectSound や Windows マルチメディア関数などのレガシ オーディオ API には、オーディオ デバイスを列挙および識別するための独自のインターフェイスがあります。 Windows Vista では、これらのインターフェイスは、API によって提示されるデバイス抽象化の基になるエンドポイント デバイスを識別するエンドポイント ID 文字列を提供するように拡張されています。
DirectSound デバイスの列挙中に、DirectSound は列挙する各デバイスのエンドポイント ID 文字列を提供します。 詳細については、レガシーオーディオアプリケーション向けのオーディオイベント を参照してください。
レガシ波形デバイスのエンドポイント ID 文字列を取得するには、waveOutMessage または waveInMessage 関数を使用して、波形デバイス ドライバーにDRV_QUERYFUNCTIONINSTANCEIDメッセージを送信します。 このメッセージの使用方法を示すコード例については、「従来の Windows マルチメディア アプリケーションのデバイス ロール 」を参照してください。
コア オーディオ API の機能を使用してレガシ オーディオ API を使用するアプリケーションを強化する方法の詳細については、「レガシ オーディオ APIとの相互運用性」を参照してください。
クライアントは、エンドポイント ID 文字列の内容を不透明として扱う必要があります。 つまり、クライアントは文字列の内容を解析してデバイスに関する情報を取得しないでください。 その理由は、文字列形式が未定義であり、MMDevice API システム モジュールの実装から次の実装に変わる可能性があるためです。
エンドポイント ID 文字列の有効期間は、デバイスのインストールに関連付けられます。 デバイスのエンドポイント ID 文字列は、ユーザーがデバイス ドライバーをアップグレードした場合、またはユーザーがデバイスをアンインストールして再インストールした場合に変更されます。 ただし、システムの再起動後もエンドポイント ID 文字列は変更されず、ユーザーがデバイスを取り外して差し込み直しても、USB オーディオ デバイスのエンドポイント ID 文字列は変更されません。
関連トピック