ITsSbPlugin
COM公式ドキュメント
プラグインを初期化および終了するメソッドを公開します。
解説(Remarks)
2 種類のプラグインがサポートされています。フィルターとリソースです。リソースプラグインは、新しい種類のリソース(たとえば、異なるハイパーバイザー上で実行される VM)をサポートするためのものです。フィルタープラグインを使用すると、他のプラグインに渡される情報をプラグインが変更できます(たとえば、リソース要求を最も使用率の低いノードに渡すなど)。
リソースフィルターを登録するには、次の値をレジストリに追加します。
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Services
Tssdis
Parameters
Plugins
Resource
リソースプラグイン名
CLSID = {リソースプロバイダーの CLSID}- データ型
- REG_SZ
- データ型
- REG_SZ
- データ型
- REG_DWORD
使用する名前は一意であり、会社、製品、機能を識別できるものにする必要があります。これらの名前はユーザーには表示されませんが、一部のログで確認できます。
フィルタープロバイダーを登録するには、次の値をレジストリに追加します。
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Services
Tssdis
Parameters
Plugins
Filter
1
CLSID = {フィルタープロバイダー 1 の CLSID}- データ型
- REG_SZ
- データ型
- REG_SZ
- データ型
- REG_DWORD
- データ型
- REG_SZ
- データ型
- REG_SZ
- データ型
- REG_DWORD
システムはまず Filter 1 を読み込み、次に Filter 2 を読み込みます(以下同様)。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
プラグインを初期化します。
| pProvider | ITsSbProvider* | in | ITsSbProvider プロバイダーオブジェクトへのポインター。 |
| pNotifySink | ITsSbPluginNotifySink* | in | ITsSbPluginNotifySink 通知シンクオブジェクトへのポインター。 |
| pPropertySet | ITsSbPluginPropertySet* | in | ITsSbPluginPropertySet プラグインプロパティセットオブジェクトへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
プラグインは、指定された ITsSbPluginNotifySink シンクオブジェクトに対して OnInitialized を呼び出す必要があります。
クリーンアップを実行し、プラグインをアンロードします。
| hr | HRESULT | in | 終了の理由を指定します。プラグインは標準的な HRESULT エラーコードを指定する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITsSbPlugin "{48CD7406-CAAB-465F-A5D6-BAA863B9EA4F}"
#usecom global ITsSbPlugin IID_ITsSbPlugin "{}"
#comfunc global ITsSbPlugin_Initialize 3 sptr,sptr,sptr
#comfunc global ITsSbPlugin_Terminate 4 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。