Win32 API 日本語リファレンス
ホームSystem.RemoteDesktop › ITsSbPlugin

ITsSbPlugin

COM
IID48cd7406-caab-465f-a5d6-baa863b9ea4f継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

プラグインを初期化および終了するメソッドを公開します。

解説(Remarks)

2 種類のプラグインがサポートされています。フィルターとリソースです。リソースプラグインは、新しい種類のリソース(たとえば、異なるハイパーバイザー上で実行される VM)をサポートするためのものです。フィルタープラグインを使用すると、他のプラグインに渡される情報をプラグインが変更できます(たとえば、リソース要求を最も使用率の低いノードに渡すなど)。

リソースフィルターを登録するには、次の値をレジストリに追加します。

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Services
            Tssdis
               Parameters
                  Plugins
                     Resource
                        リソースプラグイン名
                           CLSID = {リソースプロバイダーの CLSID}
                           データ型
                           REG_SZ
                           Provider = リソースプロバイダーの名前
                           データ型
                           REG_SZ
                           IsEnabled = 1
                           データ型
                           REG_DWORD

使用する名前は一意であり、会社、製品、機能を識別できるものにする必要があります。これらの名前はユーザーには表示されませんが、一部のログで確認できます。

 

フィルタープロバイダーを登録するには、次の値をレジストリに追加します。

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Services
            Tssdis
               Parameters
                  Plugins
                     Filter
                        1
                           CLSID = {フィルタープロバイダー 1 の CLSID}
                           データ型
                           REG_SZ
                           Provider = フィルタープロバイダー 1 の名前
                           データ型
                           REG_SZ
                           IsEnabled = 1
                           データ型
                           REG_DWORD
                        2…                            CLSID = {フィルタープロバイダー 2 の CLSID}
                           データ型
                           REG_SZ
                           Provider = フィルタープロバイダー 2 の名前
                           データ型
                           REG_SZ
                           IsEnabled = 1
                           データ型
                           REG_DWORD

システムはまず Filter 1 を読み込み、次に Filter 2 を読み込みます(以下同様)。

メソッド 2

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Initialize(ITsSbProvider* pProvider, ITsSbPluginNotifySink* pNotifySink, ITsSbPluginPropertySet* pPropertySet)

プラグインを初期化します。

pProviderITsSbProvider*inITsSbProvider プロバイダーオブジェクトへのポインター。
pNotifySinkITsSbPluginNotifySink*inITsSbPluginNotifySink 通知シンクオブジェクトへのポインター。
pPropertySetITsSbPluginPropertySet*inITsSbPluginPropertySet プラグインプロパティセットオブジェクトへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

プラグインは、指定された ITsSbPluginNotifySink シンクオブジェクトに対して OnInitialized を呼び出す必要があります。

vtbl 4 HRESULT Terminate(HRESULT hr)

クリーンアップを実行し、プラグインをアンロードします。

hrHRESULTin終了の理由を指定します。プラグインは標準的な HRESULT エラーコードを指定する必要があります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。