IAssemblyCache
COM公式ドキュメント
IAssemblyCache インターフェイスは、side-by-side アセンブリのインストール、アンインストール、またはクエリを行うために使用できます。IAssemblyCache のインスタンスは、CreateAssemblyCache 関数を呼び出すことで取得します。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
UninstallAssembly メソッドは、side-by-side ストアからアセンブリへのアプリケーション参照を削除します。
| dwFlags | DWORD | in | このパラメーターは 0 でなければなりません。 |
| pszAssemblyName | LPWSTR | in | アセンブリの完全に指定された強い名前を格納する、null で終わる文字列値へのポインター。完全な名前が指定されていない場合、結果は未定義です。 |
| pRefData | FUSION_INSTALL_REFERENCE* | inout | 削除されるアセンブリへの参照を保持するアプリケーションを記述する FUSION_INSTALL_REFERENCE 構造体へのポインター。この値が null の場合、アプリケーションによるアセンブリへの参照は side-by-side ストアに残らず、アセンブリのファイルは削除されます。 注意 参照 ID には、文字 \、/、:、;、*、<、>、および | は使用できません。
|
| pulDisposition | IASSEMBLYCACHE_UNINSTALL_DISPOSITION* | inout | 実行されたアクションを記述する整数値へのポインター。 pulDisposition パラメーターには、次の値のいずれか、または null を格納できます。 |
戻り値
このメソッドは、これらの値のいずれかを返すことがあります。
| 戻り値 | 説明 |
|---|---|
| アセンブリのファイルが side-by-side ストアから削除されました。 | |
| 操作は成功し、アセンブリへの参照が削除されました。pulDisposition が返す値で説明される理由により、アセンブリのファイルは side-by-side ストアから削除されませんでした。 |
QueryAssemblyInfo メソッドは、アセンブリ情報について side-by-side アセンブリストアにクエリを実行し、side-by-side アセンブリストア内のファイルをアセンブリマニフェストと照合して検証します。
| dwFlags | QUERYASMINFO_FLAGS | in | 取得する情報を指定します。 このパラメーターには、次の値のいずれか 1 つ以上、または 0 を指定できます。
| ||||||
| pszAssemblyName | LPWSTR | in | クエリするアセンブリの完全に指定された強い名前を格納する、null で終わる文字列値へのポインター。名前が完全に指定されていない場合、メソッドの結果は未定義です。 | ||||||
| pAsmInfo | ASSEMBLY_INFO* | inout | 情報を受け取る ASSEMBLY_INFO 構造体へのポインター。 |
戻り値
CreateAssemblyCacheItem メソッドは、インストールされる side-by-side アセンブリに対応する項目をアセンブリキャッシュ内に作成します。
| dwFlags | DWORD | in | 予約済みです。 |
| pvReserved | void* | inout | 予約済みです。 |
| ppAsmItem | IAssemblyCacheItem** | out | 情報を受け取る IAssemblyCacheItem のインスタンスへのポインターを格納する場所へのポインター。 |
| pszAssemblyName | LPWSTR | in | インストールされるアセンブリの完全に指定された強い名前を格納する、null で終わる文字列値へのポインター。指定された名前は、マニフェスト内のアセンブリの名前と一致するか検証されます。部分的な名前の場合は FUSION_E_INVALID_NAME が返されます。このパラメーターが null の場合、名前は検証されません。 |
戻り値
このメソッドは、これらの値のいずれかを返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| メソッドは成功しませんでした。 | |
|
アセンブリの完全な名前を pszAssemblyName で指定する必要があります。 |
| ppUnk | IUnknown** | out | 予約済みの出力インターフェイスポインタへのポインタである。 |
InstallAssembly メソッドは、アセンブリへのアプリケーション参照を side-by-side ストアに追加し、アセンブリのファイルを side-by-side ストアにコピーします。インストールされるアセンブリのファイルは、現在のファイルシステム上に存在している必要があります。
| dwFlags | DWORD | in | このパラメーターは、side-by-side ストア内の既存のファイルを、インストールされるアセンブリのファイルでどのように置き換えるかを指定します。 次のオプションのいずれかを指定できます。 |
| pszManifestFilePath | LPWSTR | in | アセンブリマニフェストを含むダイナミックリンクライブラリ (DLL) または実行可能 (EXE) ファイルへのフルパスを格納する文字列値へのポインター。その他のアセンブリファイルは、この DLL または EXE と同じディレクトリに配置する必要があります。 |
| pRefData | FUSION_INSTALL_REFERENCE* | inout | インストールされるアセンブリへの参照を保持するアプリケーションを記述する FUSION_INSTALL_REFERENCE 構造体へのポインター。このパラメーターが null の場合、アセンブリファイルはコピーされますが、アプリケーション参照は side-by-side ストアに追加されません。 |
戻り値
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAssemblyCache "{E707DCDE-D1CD-11D2-BAB9-00C04F8ECEAE}" #usecom global IAssemblyCache IID_IAssemblyCache "{}" #comfunc global IAssemblyCache_UninstallAssembly 3 int,wstr,var,var #comfunc global IAssemblyCache_QueryAssemblyInfo 4 int,wstr,var #comfunc global IAssemblyCache_CreateAssemblyCacheItem 5 int,sptr,sptr,wstr #comfunc global IAssemblyCache_Reserved 6 sptr #comfunc global IAssemblyCache_InstallAssembly 7 int,wstr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IAssemblyCache "{E707DCDE-D1CD-11D2-BAB9-00C04F8ECEAE}" #usecom global IAssemblyCache IID_IAssemblyCache "{}" #comfunc global IAssemblyCache_UninstallAssembly 3 int,wstr,sptr,sptr #comfunc global IAssemblyCache_QueryAssemblyInfo 4 int,wstr,sptr #comfunc global IAssemblyCache_CreateAssemblyCacheItem 5 int,sptr,sptr,wstr #comfunc global IAssemblyCache_Reserved 6 sptr #comfunc global IAssemblyCache_InstallAssembly 7 int,wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。