Microsoft DirectX 8.0 (C++)

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
オブジェクトはメモリ内にあり、llMemLengthpbMemData は有効である。
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 メソッドを使用してオブジェクトを取得できるように、wszNameidGuid、および 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 で宣言。