Platform SDK: DirectX

ディレクトリでのオブジェクト検索

[Visual Basic]

ここでは、C++ で記述されたアプリケーションに関連のある内容だけを説明する。

[C++]

IDirectMusicLoader::ScanDirectory メソッドは、特定のクラスのオブジェクトを現在の検索ディレクトリで探す。サブクラスと、"*" 以外のファイル拡張子を指定することにより、検索範囲を狭められる。

このメソッドは一致するすべてのファイルから成るリストを作成し、IDirectMusicObject::ParseDescriptor メソッドを使ってオブジェクトの GUID と名前を抽出する。これらの識別子は内部データベースに保持されるので、アプリケーションはそれ以降、ファイル名ではなく GUID や名前を使ってオブジェクトをロードできる (「ファイルからのオブジェクトのロード」を参照すること)。

 :  オブジェクトをロードする前に、常に IDirectMusicLoader::ScanDirectory を呼び出すのは良い考えである。ファイル名を明示的に指定してオブジェクトをロードする場合でも、これらのオブジェクトにはファイル名で指定されていないほかのオブジェクトへの参照が含まれている場合がある。オブジェクトが格納されている各ディレクトリに対して ScanDirectory が呼び出されていない場合、ローダーはこれらの参照されているオブジェクトを見つけることができない。

ScanDirectory メソッドの pwszScanFileName パラメータに、文字列へのポインタを含めると、その名前を持つファイルに検索結果がキャッシングされ、それ以降の検索が高速化される。キャッシュ ファイルを利用できる場合、このメソッドはタイム スタンプやサイズが変更されているファイルに限ってオブジェクト情報を更新する。

 :  現在のバージョンの DirectMusic では、ScanDirectory はキャッシュ ファイルを使用しない。キャッシュ ファイルの実装は、現在でも可能である。これにより、今後のバージョンでパフォーマンスが向上する。

例については、「オブジェクトの列挙」を参照すること。