次の方法で共有


オーディオ データのロード

DirectMusic オブジェクトの多くは、パフォーマンスに組み込む前に、ファイルまたはリソースからロードしなければならない。このようなオブジェクトの列挙およびロードを管理するには、IDirectMusicLoader8 インターフェイスを使う。また、ロードが一度で済むようにオブジェクトをキャッシュするためにも、このインターフェイスを使う。

信頼できないソースからデータをロードしてはならない。DirectMusic データ ファイルをロードするとオブジェクトが作成され、リソースの過剰な消費によりパフォーマンスの低下やシステム障害が発生する可能性がある。

アプリケーションが使えるローダーのインスタンスは、一度に 1 つだけである。1 つのグローバル ローダー オブジェクトを作成し、ロードがすべて終了するまでオブジェクトを解放しないようにする。この方法により、オブジェクトが効果的に検索およびキャッシングされる。

オブジェクトをメモリまたはストリームからロードする場合には、アプリケーションは、ローダーが解放されるまでデータにアクセスしてはならない。キャッシュおよび他の内部メカニズムのため、ローダーが後でデータにアクセスを試みる場合がある。新しいデータをロードするには、常に、新しいバッファを割り当てるか、または新しいストリームを作成する。

DirectMusic における IStream の実装が、ソースからのデータをストリーミングする。データの解析は、IPersistStream の実装を通して、さまざまなオブジェクト自身によって処理される。標準的な DirectMusic データだけを扱う場合は、これらのインターフェイスを直接使用する必要はない。

他のオブジェクトによって参照されるオブジェクトのロードは、透過的に処理される。たとえば、DirectMusic Producer ファイルからロードされるセグメントに、他のファイルにある WAV サウンドへの参照が含まれているものとする。セグメントにおける IPersistStream::Load の実装は、参照を見つけると、ストリーム オブジェクトから IDirectMusicGetLoader8 インターフェイスを取得する。このインターフェイスを使って、ローダー オブジェクトへのポインタを取得する。次に、IDirectMusicLoader8::GetObject を呼び出して、WAV サウンドをロードする。

ローダーの使い方の詳細については、次のトピックを参照すること。

参照