Microsoft DirectX 8.0 (C++)

IDirectMusicObject8::SetDescriptor

オブジェクトの内部的な記述を一部またはすべてのメンバに設定する。

このメソッドは、主にローダーがオブジェクトを作成する際に使われるものであり、通常はアプリケーションが直接利用することはない。ただし、アプリケーションが DirectMusic 内にオブジェクト タイプを実装する場合、そのアプリケーションはこのメソッドをサポートすべきである。

HRESULT SetDescriptor(
  LPDMUS_OBJECTDESC pDesc
);

パラメータ

pDesc
オブジェクトに関するデータを受け取る DMUS_OBJECTDESC 構造体のアドレス。dwValidData メンバで有効と定義されているすべてのメンバにデータがコピーされる。

戻り値

成功した場合は、次のいずれかのコードを返す。

S_OK ディスクリプタが設定された。
S_FALSE 「注意」を参照すること。
DMUS_S_GARBAGE_COLLECTED ガベージ コレクション」を参照すること。

失敗した場合は、次のいずれかのエラー値を返す。

E_INVALIDARG
E_POINTER

注意

アプリケーションは通常、標準的なオブジェクトに対してこのメソッドを呼び出すことはない。IDirectMusicObject8::GetDescriptor によって返されるオブジェクト ディスクリプタを変更することは可能であるが、新しい記述を IDirectMusicLoader8::GetObject メソッドに正常に渡すことはできない。たとえば、オブジェクトの名前を変更することはできるが、変更しても、GetObject はオブジェクトの元の名前を使ってそのオブジェクトを検索する。これは、GetObject がオブジェクト自体の SetDescriptor の実装に依存しているためである。

コピーされなかったメンバは、それまでの値を維持する。たとえば、あるオブジェクトが名前と GUID を既に内部で保存していたとする。新しい名前とファイル パスを指定して (さらに dwValidData に DMUS_OBJ_NAME | DMUS_OBJ_FILENAME を含めて) SetDescriptor メソッドを呼び出すと、名前は置き換えられ、ファイル名が提供されるが、GUID だけは元の値のままになる。

オブジェクトが 1 つまたは複数のメンバを設定できない場合、自らがサポートしているメンバだけを設定し、サポートしていないメンバに対応する dwValidData 内のフラグを消去し、S_FALSE を返す。アプリケーションによって定義されるオブジェクトは、少なくとも DMUS_OBJ_NAME と DMUS_OBJ_OBJECT をサポートすべきである。

動作環境

  ヘッダー : dmusici.h で宣言。

参照

IDirectMusicObject8::ParseDescriptorIDirectMusicObject8::GetDescriptor