DMUS_OBJECTDESC
DirectMusic オブジェクトを記述するために使用される。この構造体を IDirectMusicLoader8::GetObject メソッドに渡して、ローダーが記憶装置から取得すべきオブジェクトを識別する。この構造体からオブジェクトに関する情報を取得するには、IDirectMusicLoader8::EnumObject メソッドと IDirectMusicObject8::GetDescriptor メソッドを使用する。
typedef struct _DMUS_OBJECTDESC {
DWORD dwSize;
DWORD dwValidData;
GUID guidObject;
GUID guidClass;
FILETIME ftDate;
DMUS_VERSION vVersion;
WCHAR wszName[DMUS_MAX_NAME];
WCHAR wszCategory[DMUS_MAX_CATEGORY];
WCHAR wszFileName[DMUS_MAX_FILENAME];
LONGLONG llMemLength;
LPBYTE pbMemData;
IStream *pStream
} DMUS_OBJECTDESC, *LPDMUS_OBJECTDESC;
メンバ
- dwSize
- 構造体のサイズ。バイト単位で指定する。この構造体を任意のメソッドに渡す前に、このメンバを sizeof(DMUS_OBJECTDESC) に初期化しなければならない。
- dwValidData
- どのメンバが有効なのか記述し、いくつかのメンバに関する詳細な情報を提供するフラグ。次の値が定義されている。
- DMUS_OBJ_CATEGORY
- wszCategory メンバは有効である。
- DMUS_OBJ_CLASS
- guidClass メンバは有効である。
- DMUS_OBJ_DATE
- ftDate メンバは有効である。
- DMUS_OBJ_FILENAME
- wszFileName メンバは有効である。DMUS_OBJ_FULLPATH が設定されている場合は、このフラグがあると想定される。
- DMUS_OBJ_FULLPATH
- wszFileName メンバは、ファイルのフル パス、またはアプリケーション ディレクトリからの相対パスのどちらかを保持している。IDirectMusicLoader8::SetSearchDirectory で設定されたディレクトリは検索されない。このフラグが設定されない場合、wszFilename は常に、アプリケーション ディレクトリからの相対パス、またはこのオブジェクト タイプに対して SetSearchDirectory が呼び出される場合は、検索ディレクトリからの相対パスであると仮定される。
- DMUS_OBJ_LOADED
- オブジェクトは現在メモリ内にロードされている。
- DMUS_OBJ_MEMORY
- オブジェクトはメモリ内にあり、llMemLength と pbMemData は有効である。
- DMUS_OBJ_NAME
- wszName メンバは有効である。
- DMUS_OBJ_OBJECT
- guidObject メンバは有効である。
- DMUS_OBJ_STREAM
- pStream メンバは、データ ストリームへのポインタを保持している。
- DMUS_OBJ_URL
- wszFileName メンバは URL を保持している。DirectMusic ローダーは現在 URL をサポートしていない。
- DMUS_OBJ_VERSION
- vVersion メンバは有効である。
- guidObject
- このオブジェクトの一意の識別子。
- guidClass
- オブジェクト クラスの一意の識別子。すべての標準的なオブジェクトは、"CLSID_" とオブジェクト名で構成される定義済みの識別子を持っている。たとえば、セグメント オブジェクトは CLSID_DirectMusicSegment として識別される。Dmusici.h ヘッダー ファイル内の定義を参照すること。
- ftDate
- オブジェクトが最後に編集された日付。
- vVersion
- バージョン情報を保持する DMUS_VERSION 構造体。
- wszName
- オブジェクトの名前。
- wszCategory
- オブジェクトのカテゴリ。
- wszFileName
- ファイルのパス。DMUS_OBJ_FULLPATH が設定されている場合、この値はフル パスである。それ以外の場合は、ファイル名だけである。IDirectMusicLoader8::SetSearchDirectory メソッドが呼び出されていた場合は、ファイル名のみでなければならない。
- llMemLength
- メモリ内のデータのサイズ。
- pbMemData
- メモリ内のデータ。
- pStream
- カスタム ストリームの IStream インターフェイスのアドレス。オブジェクトをメモリにロードするために使用することができる。ほとんどの場合、この値は NULL である。「注意」を参照すること。
注意
IDirectMusicLoader8::GetObject メソッドを使用してオブジェクトを取得できるように、wszName、idGuid、および wszFileName の少なくとも 1 つに有効なデータを書き込まなければならない。
名前とカテゴリの文字列は、8 ビットの ANSI 文字ではなく、WCHAR フォーマットの 16 ビット文字を使用する。必要に応じて変換を行うよう注意すること。C ライブラリの mbstowcs 関数を使用して、マルチバイトから Unicode、wcstombs 関数を使用して Unicode からマルチバイトへの変換も行える。
オブジェクト ディスクリプタをファイル名やメモリ ポインタと共に IDirectMusicLoader8::GetObject または IDirectMusicLoader8::SetObject に渡す代わりに、アプリケーションでストリームを渡すことができる。これを行うには、dwValidData に DMUS_OBJ_STREAM フラグを設定し、pStream 内のストリームへのポインタを設定する。アプリケーションが GetObject を呼び出すと、ローダーはストリームの現在の位置を保存し、ストリームからオブジェクトを読み出し、保存した位置を復元する。アプリケーションは、GetObject への呼び出しによる影響を受けずに、ストリームからの読み出しを継続して行うことができる。
ストリームで SetObject が呼び出されると、ローダーはストリームのコピーを作成する。このコピーは、オブジェクトが後からロードされた場合に使用される。したがって、アプリケーションは SetObject を使用してローダーにストリームを渡した後、ストリームを解放したり、継続してストリームから読み出したりすることができる。
ヘッダー : dmusici.h で宣言。