IAssemblyName
COM公式ドキュメント
IAssemblyName インターフェイスは、Side-by-Side アセンブリ名を表します。
メソッド 9
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
SetProperty メソッドは、Side-by-Side アセンブリ名に名前と値のペアを追加します。このメソッドは、既存の名前と値のペアの値を変更または削除することもできます。
| PropertyId | DWORD | in | 名前と値のペアを表すプロパティ ID です。有効なプロパティ ID は ASM_NAME 列挙型の値です。 |
| pvProperty | void* | inout | 名前と値のペアの値を格納するバッファーへのポインターです。 |
| cbProperty | DWORD | in | pvProperty で指定されたバッファーのサイズ(バイト単位)です。このパラメーターの値を 0 に設定すると、アセンブリ名から名前と値のペアが削除されます。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
| メソッドが成功しませんでした。 | |
| メソッドが成功しませんでした。SetProperty メソッドが Finalize メソッドの後に呼び出されました。 |
GetProperty メソッドは、アセンブリ名内の名前と値のペアの値を取得します。
| PropertyId | DWORD | in | 名前と値のペアを表すプロパティ ID です。有効なプロパティ ID は ASM_NAME 列挙型の値です。 |
| pvProperty | void* | inout | 名前と値のペアの値を受け取るバッファーへのポインターです。 |
| pcbProperty | DWORD* | inout | pvProperty で指定されたバッファーのサイズ(バイト単位)です。このプロパティが設定されていない場合、値は 0 になります。 |
戻り値
Finalize メソッドは、Side-by-Side アセンブリ名が変更されないようにします。Finalize を呼び出した後は、SetProperty をさらに呼び出すと E_UNEXPECTED が返されます。
戻り値
GetDisplayName メソッドは、Side-by-Side アセンブリ名の文字列表現を取得します。
| szDisplayName | LPWSTR | outoptional | アセンブリ名を格納する文字列値を受け取るバッファーへのポインターです。 |
| pccDisplayName | DWORD* | inout | このメソッドを呼び出すときは、このパラメーターを szDisplayName で指定されたバッファーのサイズに設定します。サイズは文字数で指定し、null 終端文字を含めます。メソッドが返るとき、pccDisplayName の値は返された名前のサイズになります。 |
| dwDisplayFlags | DWORD | in | アセンブリ名の文字列表現に含めるアセンブリ名の部分を指定する、ASM_DISPLAY_FLAGS 列挙型のオプションの 1 つ以上です。dwDisplayFlags の既定値は 0 で、アセンブリの表示名のすべての部分を返します。 |
戻り値
| refIID | GUID* | in | 予約済みのインターフェイス ID へのポインタである。 |
| pUnkReserved1 | IUnknown* | in | 予約済みのインターフェイスポインタである。 |
| pUnkReserved2 | IUnknown* | in | 予約済みのインターフェイスポインタである。 |
| szReserved | LPWSTR | in | 予約済みの文字列へのポインタである。 |
| llReserved | LONGLONG | in | 予約済みの 64 ビット値を指定する。 |
| pvReserved | void* | inout | 予約済みのデータへのポインタである。 |
| cbReserved | DWORD | in | 予約済みのサイズ値を指定する。 |
| ppReserved | void** | inout | 予約済みの出力ポインタへのポインタである。 |
GetName メソッドは、アセンブリ名の名前部分を返します。
| lpcwBuffer | DWORD* | inout | このメソッドを呼び出すときは、このパラメーターを pwzName で指定されたバッファーのサイズに設定します。サイズは文字数で指定し、null 終端文字を含めます。メソッドが返るとき、lpcwBuffer の値は返された名前のサイズになります。 |
| pwzName | LPWSTR | outoptional | 名前を受け取る文字列値へのポインターです。 |
戻り値
解説(Remarks)
このメソッドは、PropertyId を ASM_NAME の ASM_NAME_NAME オプションに設定して GetProperty メソッドを使用することと同等です。ASM_NAME_NAME が設定されていない場合、lpcwBuffer によって返されるバッファーのサイズは 0 になり、pwzName の内容は未定義になります。
| pdwVersionHi | DWORD* | inout | アセンブリバージョンの上位 32 ビット (メジャー・マイナー) を受け取る変数へのポインタである。 |
| pdwVersionLow | DWORD* | inout | アセンブリバージョンの下位 32 ビット (ビルド・リビジョン) を受け取る変数へのポインタである。 |
IsEqual メソッドは、現在のアセンブリ名を別のアセンブリ名と比較します。
| pName | IAssemblyName* | in | 現在のアセンブリと比較する別の IAssemblyName インスタンスへのポインターです。 |
| dwCmpFlags | DWORD | in | アセンブリ名のどの部分を比較するかを示します。この値には、ASM_CMP_FLAGS 列挙型のオプションの 1 つを指定できます。 |
戻り値
Clone メソッドは、現在の Side-by-Side アセンブリ名を IAssemblyName の新しいインスタンスにコピーします。
| pName | IAssemblyName** | out | IAssemblyName の新しいインスタンスへのポインターを格納する場所へのポインターです。 |
戻り値
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAssemblyName "{CD193BC0-B4BC-11D2-9833-00C04FC31D2E}" #usecom global IAssemblyName IID_IAssemblyName "{}" #comfunc global IAssemblyName_SetProperty 3 int,sptr,int #comfunc global IAssemblyName_GetProperty 4 int,sptr,var #comfunc global IAssemblyName_Finalize 5 #comfunc global IAssemblyName_GetDisplayName 6 var,var,int #comfunc global IAssemblyName_Reserved 7 var,sptr,sptr,wstr,int64,sptr,int,sptr #comfunc global IAssemblyName_GetName 8 var,var #comfunc global IAssemblyName_GetVersion 9 var,var #comfunc global IAssemblyName_IsEqual 10 sptr,int #comfunc global IAssemblyName_Clone 11 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IAssemblyName "{CD193BC0-B4BC-11D2-9833-00C04FC31D2E}" #usecom global IAssemblyName IID_IAssemblyName "{}" #comfunc global IAssemblyName_SetProperty 3 int,sptr,int #comfunc global IAssemblyName_GetProperty 4 int,sptr,sptr #comfunc global IAssemblyName_Finalize 5 #comfunc global IAssemblyName_GetDisplayName 6 sptr,sptr,int #comfunc global IAssemblyName_Reserved 7 sptr,sptr,sptr,wstr,int64,sptr,int,sptr #comfunc global IAssemblyName_GetName 8 sptr,sptr #comfunc global IAssemblyName_GetVersion 9 sptr,sptr #comfunc global IAssemblyName_IsEqual 10 sptr,int #comfunc global IAssemblyName_Clone 11 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。