Platform SDK: DirectX

IDirectMusicLoader::ScanDirectory

IDirectMusicLoader::ScanDirectory メソッドは、ディスク内のあるディレクトリで、指定されたクラス タイプとファイル拡張子を持つすべてのファイルを検索する。ファイルが見つかるたびに、IDirectMusicObject::ParseDescriptor メソッドを呼び出して、オブジェクトの GUID と名前を抽出する。この情報は内部データベースに保存される。あるディレクトリを検索した後、指定されたすべてのファイルは IDirectMusicLoader::EnumObject メソッドの列挙型として利用可能になる。加えて、IDirectMusicLoader::GetObject を使ったときに、ファイル名なしでもオブジェクトが取り出し可能になる。

HRESULT ScanDirectory(
  REFGUID rguidClass,
  WCHAR* pwzFileExtension,
  WCHAR* pwzScanFileName
);

パラメータ

rguidClass
オブジェクトのクラス識別子への参照 (C++) またはアドレス (C)。
pwzFileExtension
検索対象のファイル タイプのファイル拡張子。たとえば、L"sty" はスタイル ファイルを意味する。"*" を使って、任意の拡張子の付いたファイルまたは拡張子のないファイルを検索する。
pwzScanFileName
キャッシングされたファイル情報の保存と取り出しを行うためのオプションの保存ファイルの名前。最初に ScanDirectory を呼び出したときにこのファイルが作成され、それ以降の呼び出しで使われる。キャッシュファイルが不要な場合は NULL を指定する。

戻り値

成功すれば S_OK を返す。ファイルが見つからなかった場合は S_FALSE を返す。

失敗すれば次のエラー値のいずれかを返す。

DMUS_E_NOT_FOUND
E_FAIL
E_OUTOFMEMORY
E_POINTER
REGDB_E_CLASSNOTREG

注意

検索の場所を設定するために、最初に IDirectMusicLoader::SetSearchDirectory メソッドを呼び出さなければならない。

pwzScanFileName で定義されたファイルに、検索された情報を保存できる。保存を行うと、変更を加えられたファイルだけが検索されるため、それ以降の ScanDirectory の呼び出しが大幅に高速化される (キャッシュ ファイルは各オブジェクトのファイル サイズと日付を保存するので、ファイルが変更された場合はそのことを検出できる)。

ファイル タイプが複数の拡張子を持っている場合、拡張子ごとに ScanDirectory を 1 回呼び出す。

GUID_DirectMusicAllTypes は rguidClass の有効な値ではない。

動作環境

  Windows NT/2000 : Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dmusici.h で宣言。

参照

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