IWMPropertyVault
COM公式ドキュメント
IWMPropertyVault インターフェイスは、プロパティを格納および取得するためのメソッドを提供します。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetPropertyCount メソッドは、プロパティボールト内のすべてのプロパティの数を取得します。
| pdwCount | DWORD* | in | プロパティ数を受け取る DWORD へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
| pdwCount が NULL です。 |
GetPropertyByName メソッドは、名前を指定してボールトからプロパティを取得します。
| pszName | LPWSTR | in | 取得するプロパティの名前を格納した null 終端文字列へのポインター。 |
| pType | WMT_ATTR_DATATYPE* | out | WMT_ATTR_DATATYPE 列挙型のメンバーへのポインター。このパラメーターは、pValue が指すデータの型を指定します。 |
| pValue | BYTE* | out | プロパティの値を格納したデータバッファーへのポインター。この値は、複数の型のいずれかになります。出力時にバッファーが格納するデータの型は、pType の値によって指定されます。 |
| pdwSize | DWORD* | inout | pValue のデータのサイズ(バイト単位)を格納した DWORD へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
pszName、pdwSize、または pType が NULL です。
または pszName に無効なプロパティ名が含まれています。 |
|
|
pdwSize に指定された pValue のサイズが、データを保持するのに十分な大きさではありません。 |
解説(Remarks)
プロパティの値を正しく取得するには、GetPropertyByName を 2 回呼び出す必要があります。1 回目の呼び出しでは、pValue に NULL を渡します。呼び出しが戻ると、pdwSize はバッファーの正しいサイズを指します。次に 2 回目の呼び出しで、適切なサイズのバッファーを pValue として渡し、データを受け取ります。
SetProperty メソッドは、プロパティの値を設定します。指定した名前のプロパティがプロパティボールトに既に存在する場合、SetProperty はその値を指定どおりに変更します。指定した名前のプロパティが存在しない場合、SetProperty はそれをプロパティボールトに追加します。
| pszName | LPWSTR | in | 設定するプロパティの名前を格納した null 終端文字列へのポインター。 次の表に、IWMPropertyVault インターフェイスがサポートするプロパティ名を示します。使用するプロパティによって、pValue が指すデータの型と意味が決まります。これらの値も表に示されています。これらの値はすべて、ストリーム構成オブジェクトに適用されます。
表内の値に加えて、可変ビットレートエンコードの設定もこのメソッドを使用して設定します。詳細については、Configuring VBR Streams を参照してください。 | |||||||||||||||||||||||||||||||||
| pType | WMT_ATTR_DATATYPE | in | WMT_ATTR_DATATYPE 列挙型のメンバーへのポインター。このパラメーターは、pValue が指すデータの型を指定します。 | |||||||||||||||||||||||||||||||||
| pValue | BYTE* | in | プロパティの値を格納したデータバッファーへのポインター。この値は、複数の型のいずれかになります。出力時にバッファーが格納するデータの型は、pType の値によって指定されます。 | |||||||||||||||||||||||||||||||||
| dwSize | DWORD | in | pValue のデータのサイズ(バイト単位)を格納した DWORD。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
pszName が NULL であるか、長さ 0 の文字列を指しています。
または pValue で指定された型が、dwSize で指定されたサイズ(バイト単位)と一致しません。 または プロパティボールトに存在しないプロパティを削除しようとしています。 |
|
|
新しいプロパティのためのメモリを割り当てられません。
または 新しい値のためのメモリを割り当てられません。 |
解説(Remarks)
このメソッドを使用してストリーム構成オブジェクトに設定されたプロパティは、そのストリーム構成が追加されるプロファイルに永続化されます。ただし、そのプロファイルを使用して作成されたファイルには、これらのプロパティはヘッダー情報に含まれません。
SetProperty は、影響を受けたプロパティのインデックスを返しません。新しいプロパティには、順番にインデックスが割り当てられます。
pValue に NULL を渡すか、dwSize に 0 を渡すことで、SetProperty を使用してプロパティを削除できます。
GetPropertyByIndex メソッドは、インデックス値を指定してボールトからプロパティを取得します。
| dwIndex | DWORD | in | プロパティインデックスを格納した DWORD。 |
| pszName | LPWSTR | out | プロパティの名前を格納したワイド文字の null 終端文字列へのポインター。 |
| pdwNameLen | DWORD* | inout | 入力時には、pszName の文字列の長さ(ワイド文字単位)を格納した DWORD へのポインター。出力時には、プロパティ名を保持するために必要な文字数(終端の null 文字を含む)を指定します。 |
| pType | WMT_ATTR_DATATYPE* | out | WMT_ATTR_DATATYPE 列挙型のメンバーへのポインター。このパラメーターは、pValue が指すデータの型を指定します。 |
| pValue | BYTE* | out | プロパティの値を格納したデータバッファーへのポインター。この値は、複数の型のいずれかになります。出力時にバッファーが格納するデータの型は、pType の値によって指定されます。 |
| pdwSize | DWORD* | inout | pValue のデータのサイズ(バイト単位)を格納した DWORD へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
pdwNameLen、pdwSize、または pType が NULL です。
または 指定されたインデックスが無効です。 |
|
|
バッファー(pszName または pValue)のいずれかが、プロパティ情報を保持するのに十分な大きさではありません。 |
解説(Remarks)
すべての情報を正しく取得するには、GetPropertyByIndex を 2 回呼び出す必要があります。1 回目の呼び出しでは、pszName と pValue の両方に NULL を渡します。呼び出しが戻ると、pdwNameLen と pdwSize はそれぞれのバッファーの正しいサイズを指します。次に 2 回目の呼び出しで、適切なサイズのバッファーを pszName と pValue として渡し、データを受け取ります。
CopyPropertiesFrom メソッドは、別のプロパティボールトからこのプロパティボールトにすべてのプロパティをコピーします。
| pIWMPropertyVault | IWMPropertyVault* | in | IWMPropertyVault インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
| コピーに必要なメモリを割り当てられません。 |
解説(Remarks)
pIWMPropertyVault に NULL を渡すと、予期しないエラーが発生します。
CopyPropertiesFrom は、IWMPropertyVault の他のメソッドを呼び出します。すべてのデータはオブジェクト自体から取得されるため、他のメソッドからエラーが返されることはありません。表に記載されていない戻りコードは、コピー元のプロパティボールト内のデータが破損していることを示します。
Clear メソッドは、プロパティボールトからすべての項目を削除します。
戻り値
このメソッドは常に S_OK を返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMPropertyVault "{72995A79-5090-42A4-9C8C-D9D0B6D34BE5}" #usecom global IWMPropertyVault IID_IWMPropertyVault "{}" #comfunc global IWMPropertyVault_GetPropertyCount 3 var #comfunc global IWMPropertyVault_GetPropertyByName 4 wstr,var,var,var #comfunc global IWMPropertyVault_SetProperty 5 wstr,int,var,int #comfunc global IWMPropertyVault_GetPropertyByIndex 6 int,var,var,var,var,var #comfunc global IWMPropertyVault_CopyPropertiesFrom 7 sptr #comfunc global IWMPropertyVault_Clear 8 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWMPropertyVault "{72995A79-5090-42A4-9C8C-D9D0B6D34BE5}" #usecom global IWMPropertyVault IID_IWMPropertyVault "{}" #comfunc global IWMPropertyVault_GetPropertyCount 3 sptr #comfunc global IWMPropertyVault_GetPropertyByName 4 wstr,sptr,sptr,sptr #comfunc global IWMPropertyVault_SetProperty 5 wstr,int,sptr,int #comfunc global IWMPropertyVault_GetPropertyByIndex 6 int,sptr,sptr,sptr,sptr,sptr #comfunc global IWMPropertyVault_CopyPropertiesFrom 7 sptr #comfunc global IWMPropertyVault_Clear 8 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。