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);