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

ItsPubPlugin

COM
IID70c04b05-f347-412b-822f-36c99c54ca45継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

RemoteApp とデスクトップ接続のユーザーが利用できるリソースに関する情報を提供するプロパティとメソッドを公開します。

解説(Remarks)

RemoteApp とデスクトップ接続管理サービスからプラグインが呼び出されるように登録するには

  1. プラグインを DLL として実装し、Regsvr32.exe ツールを使用して DLL を登録します。
  2. 次のキーの下に、DLL の CLSID を名前とするサブキーを作成します。
    HKEY_LOCAL_MACHINE
       Software
          Microsoft
             Windows NT
                CurrentVersion
                   Terminal Server
                      CentralizedPublishing
                         Plugins
  3. サブキーに、"IsEnabled" という名前で DWORD 型の値を作成します。サービスがプラグインを呼び出せるようにするには、値を 1 に設定します。プラグインの呼び出しを禁止するには、値を 0 に設定します。サービスはプラグインを自動的に読み込むため、サービスを再起動する必要はありません。

メソッド 6

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

vtbl 3 HRESULT GetResourceList(LPWSTR userID, INT* pceAppListSize, pluginResource** resourceList)

指定したユーザーに割り当てられているリソースの一覧を取得します。(ItsPubPlugin.GetResourceList)

userIDLPWSTRinユーザーのセキュリティ識別子 (SID)。
pceAppListSizeINT*outresourceList の要素数を受け取る LONG 変数へのポインター。
resourceListpluginResource**out指定したユーザーに割り当てられているリソースを受け取る pluginResource 構造体の配列へのポインターのアドレス。このメモリの割り当てには CoTaskMemAlloc 関数を使用する必要があります。このメモリの解放は呼び出し元の責任です。

戻り値

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

vtbl 4 HRESULT GetResource(LPWSTR alias, INT flags, pluginResource* resource)

このメソッドは予約されており、常に E_NOTIMPL を返す必要があります。(ItsPubPlugin.GetResource)

aliasLPWSTRinこのパラメーターは予約されています。
flagsINTinこのパラメーターは予約されています。
resourcepluginResource*outこのパラメーターは予約されています。

戻り値

このメソッドは常に E_NOTIMPL を返す必要があります。

vtbl 5 HRESULT GetCacheLastUpdateTime(ULONGLONG* lastUpdateTime)

キャッシュが最後に更新された時刻を返します。

lastUpdateTimeULONGLONG*outキャッシュが最後に更新された時刻を受け取る unsigned long long 変数へのポインター。

戻り値

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

解説(Remarks)

RemoteApp とデスクトップ接続管理サービスは、キャッシュが最後に更新された時刻を取得するためにこのメソッドを呼び出します。プラグインがキャッシュを実装していない場合は、現在のシステム時刻を返してください。これにより、サービスは現在のリソース一覧を取得するために GetResourceList を呼び出す必要があることを認識します。キャッシュを使用するとサービスが GetResourceList を呼び出す回数が減るため、キャッシュを実装したプラグインとして実装することをお勧めします。

vtbl 6 HRESULT get_pluginName(LPWSTR* pVal)

プラグインの名前を取得します。

pValLPWSTR*outプラグインの名前を受け取る LPWSTR へのポインタである。
vtbl 7 HRESULT get_pluginVersion(LPWSTR* pVal)

プラグインのバージョンを取得します。

pValLPWSTR*outプラグインのバージョン文字列を受け取る LPWSTR へのポインタである。
vtbl 8 HRESULT ResolveResource(DWORD* resourceType, LPWSTR resourceLocation, LPWSTR endPointName, LPWSTR userID, LPWSTR alias)

ユーザーに割り当てられた個人用仮想デスクトップへの接続方法に関する情報を提供します。

resourceTypeDWORD*out

リソースの種類を受け取る DWORD 変数へのポインター。次のいずれかの値を指定できます。

1

プラグインは仮想デスクトッププール用です。

2

プラグインは個人用仮想デスクトップ用です。

resourceLocationLPWSTRoutリソースプラグインの名前。
endPointNameLPWSTRoutエンドポイントの名前。個人用仮想デスクトップの場合は、ユーザーに割り当てられているデスクトップの名前を指定します。仮想デスクトッププールの場合は、プールの名前を指定します。
userIDLPWSTRinユーザーのセキュリティ識別子 (SID) を含む文字列へのポインター。
aliasLPWSTRinユーザーのエイリアスを含む文字列へのポインター。

戻り値

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

解説(Remarks)

RD 接続ブローカーは、ユーザーをリソースに接続する際に 1 つのプラグインのみを呼び出します。呼び出しを受け取るには、RD 接続ブローカーを起動する前にプラグインを登録するか、クライアントが接続に使用する .rdp ファイルに "LoadBalanceInfo" 設定を追加する必要があります。たとえば、プラグインが個人用仮想デスクトップ用で "plugin1" という名前の場合、.rdp ファイルに次の行を追加します。"LoadBalanceInfo:s:tsv://vmresource1.2.plugin1"

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ItsPubPlugin "{70C04B05-F347-412B-822F-36C99C54CA45}"
#usecom global ItsPubPlugin IID_ItsPubPlugin "{}"
#comfunc global ItsPubPlugin_GetResourceList         3 wstr,var,var
#comfunc global ItsPubPlugin_GetResource             4 wstr,int,var
#comfunc global ItsPubPlugin_GetCacheLastUpdateTime  5 var
#comfunc global ItsPubPlugin_get_pluginName          6 var
#comfunc global ItsPubPlugin_get_pluginVersion       7 var
#comfunc global ItsPubPlugin_ResolveResource         8 var,var,var,wstr,wstr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。