Microsoft DirectX 8.0 (C++) |
ユーザーが優先するキャプチャ デバイスでサウンドをキャプチャするだけのアプリケーションでは、利用可能なデバイスを列挙する必要はない。NULL または定義済みの GUID を DirectSoundCaptureCreate8 または DirectSoundFullDuplexCreate8 に渡すことによって、デフォルトのデバイスを作成できる。詳細については、「DirectSoundCapture オブジェクトの作成」を参照すること。
特定の種類のデバイスを探している場合や、複数のデバイスを使って動作する必要がある場合は、システム上で利用可能なデバイスを列挙しなければならない。
列挙は 3 つの目的で使われる。
デバイスを列挙するには、DirectSound がデバイスを見つけるたびに呼び出すコールバック関数を最初に作成しなければならない。必要なすべての処理をこの関数内で実行し、関数に任意の名前を付けることができるが、この関数はプロトタイプである DSEnumCallback と同じ形式で宣言しなければならない。このコールバック関数は、列挙を続ける場合は TRUE、その他 (たとえば必要な能力を備えたデバイスを見つけた後など) の場合は FALSE を返さなければならない。
コールバック関数の例については、「サウンド デバイスの列挙」を参照すること。各デバイスの GUID が、この関数に渡されるパラメータの 1 つとして取得される点に注意すること。
列挙は DirectSoundCaptureEnumerate 関数を使うことにより動作に移される。
DWORD pv; // 任意の 32 ビット型。 HRESULT hr = DirectSoundCaptureEnumerate( (LPDSENUMCALLBACK)DSEnumProc, (VOID*)&pv);