Platform SDK: DirectX

DirectSound オブジェクトの作成

[C++]

DirectSound オブジェクトを作成する最も簡単な方法は、DirectSoundCreate 関数を使うことである。この関数の最初のパラメータは、このオブジェクトに関連付けられるデバイスの GUID を指定する。この GUID は、「サウンド デバイスの列挙」で取得できる。ほかに、デフォルトのデバイスに対応するオブジェクトを作成するには、単純に NULL を渡せばよい。

LPDIRECTSOUND lpds; 
HRESULT hr = DirectSoundCreate(NULL, &lpds, NULL));
 

サウンド デバイスが存在しない場合や、ウェーブフォーム オーディオ関数 (DirectSound ではない) を利用するアプリケーションがサウンド デバイスを制御している場合は、この関数はエラーを返す。アプリケーションはこの呼び出しが失敗した場合に備えて、サウンドなしでアプリケーションを続行するか、既にサウンド デバイスを使っているアプリケーションを閉じるようユーザーにプロンプトを表示するか、どちらかの準備をする必要がある。

CoCreateInstance 関数を使って、次のように DirectSound オブジェクトを作成することもできる。

  1. アプリケーションの起動時に CoInitialize を呼び出し、NULL を指定して COM を初期化する。
    if FAILED(CoInitialize(NULL))
        return FALSE;
     
  2. DirectSoundCreate 関数ではなく、CoCreateInstance IDirectSound::Initialize の各メソッドを使って DirectSound オブジェクトを作成する。
    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(); 
 
[Visual Basic]

DirectX7.DirectSoundCreate メソッドを使って DirectSound オブジェクトを作成する。単一のパラメータで、このオブジェクトに関連付けるデバイスの GUID を指定する。この GUID は、「サウンド デバイスの列挙」で取得できる。ほかに、デフォルトのデバイスに対応するオブジェクトを作成するには、次のように空の文字列を渡せばよい。

Dim m_dx As New DirectX7
Dim m_ds As DirectSound
Set m_ds = m_dx.DirectSoundCreate("")
 

サウンド デバイスが存在しない場合や、標準的なウェーブフォーム オーディオ関数 (DirectSound ではない) を利用するアプリケーションがサウンド デバイスを制御している場合は、このメソッドはエラーとなる。アプリケーションはこの呼び出しが失敗した場合に備えて、サウンドなしでアプリケーションを続行するか、サウンド デバイスを使っているアプリケーションを閉じるようユーザーにプロンプトを表示するか、どちらかの準備をする必要がある。