Platform SDK: DirectX |
DirectSound オブジェクトを作成する最も簡単な方法は、DirectSoundCreate 関数を使うことである。この関数の最初のパラメータは、このオブジェクトに関連付けられるデバイスの GUID を指定する。この GUID は、「サウンド デバイスの列挙」で取得できる。ほかに、デフォルトのデバイスに対応するオブジェクトを作成するには、単純に NULL を渡せばよい。
LPDIRECTSOUND lpds; HRESULT hr = DirectSoundCreate(NULL, &lpds, NULL));
サウンド デバイスが存在しない場合や、ウェーブフォーム オーディオ関数 (DirectSound ではない) を利用するアプリケーションがサウンド デバイスを制御している場合は、この関数はエラーを返す。アプリケーションはこの呼び出しが失敗した場合に備えて、サウンドなしでアプリケーションを続行するか、既にサウンド デバイスを使っているアプリケーションを閉じるようユーザーにプロンプトを表示するか、どちらかの準備をする必要がある。
CoCreateInstance 関数を使って、次のように DirectSound オブジェクトを作成することもできる。
if FAILED(CoInitialize(NULL)) return FALSE;
LPDIRECTSOUND lpds; dsrval = CoCreateInstance(&CLSID_DirectSound, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectSound, &lpds); if SUCCEEDED(dsrval) dsrval = IDirectSound_Initialize(lpds, NULL);
CLSID_DirectSound は、DirectSound のドライバ オブジェクト クラスのクラス識別子であり、IID_IDirectSound は必須の DirectSound インターフェイスである。lpds パラメータは、CoCreateInstance が返す、初期化されていないオブジェクトである。
CoCreateInstance 関数を使って作成した DirectSound を使う前に、IDirectSound::Initialize メソッドを呼び出さなければならない。このメソッドは、DirectSoundCreate が使うドライバの GUID パラメータ (この場合は NULL) を取る。DirectSound オブジェクトを初期化した後、DirectSoundCreate 関数を使って作成した場合と同様、このオブジェクトの使用と解放が行える。
アプリケーションを閉じる前に、次のように CoUninitialize 関数を呼び出して COM ライブラリを閉じる。
CoUninitialize();
DirectX7.DirectSoundCreate メソッドを使って DirectSound オブジェクトを作成する。単一のパラメータで、このオブジェクトに関連付けるデバイスの GUID を指定する。この GUID は、「サウンド デバイスの列挙」で取得できる。ほかに、デフォルトのデバイスに対応するオブジェクトを作成するには、次のように空の文字列を渡せばよい。
Dim m_dx As New DirectX7 Dim m_ds As DirectSound Set m_ds = m_dx.DirectSoundCreate("")
サウンド デバイスが存在しない場合や、標準的なウェーブフォーム オーディオ関数 (DirectSound ではない) を利用するアプリケーションがサウンド デバイスを制御している場合は、このメソッドはエラーとなる。アプリケーションはこの呼び出しが失敗した場合に備えて、サウンドなしでアプリケーションを続行するか、サウンド デバイスを使っているアプリケーションを閉じるようユーザーにプロンプトを表示するか、どちらかの準備をする必要がある。