IWRdsProtocolLicenseConnection
COM公式ドキュメント
接続シーケンス中にライセンスハンドシェイクを実行するために、リモートデスクトップサービスのサービスが使用するメソッドを公開します。
解説(Remarks)
このインターフェイスのいずれかのメソッドを呼び出す際に発生し得るデッドロックを回避するため、直接的または間接的にリモートデスクトップサービス API の呼び出しを引き起こすような関数呼び出しやメソッド呼び出しを行わないでください。外部への呼び出しを行う必要がある場合は、新しいスレッドを開始し、その新しいスレッドから外部への呼び出しを行ってください。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
クライアントにライセンス機能を要求します。
| ppLicenseCapabilities | WTS_LICENSE_CAPABILITIES* | out | クライアントのライセンス機能に関する情報を格納する WRDS_LICENSE_CAPABILITIES 構造体へのポインター。 |
| pcbLicenseCapabilities | DWORD* | inout | ppLicensingCapabilities パラメーターで指定される構造体のサイズを格納する整数へのポインター。 |
戻り値
このメソッドを実装する際は、関数が成功した場合は S_OK を返してください。失敗した場合は、エラーを示す HRESULT 値を返してください。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
クライアントにライセンスを送信します。
| pClientLicense | BYTE* | in | ライセンスを格納するバイト配列へのポインター。 |
| cbClientLicense | DWORD | in | ライセンスのサイズ (バイト単位) を格納する整数。 |
戻り値
このメソッドを実装する際は、関数が成功した場合は S_OK を返してください。失敗した場合は、エラーを示す HRESULT 値を返してください。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。返したエラーはリモート接続マネージャーによってログに記録されます。
解説(Remarks)
この呼び出しで交換されるバイト配列 (SERVER_NEW_LICENSE、SERVER_PLATFORM_CHALLENGE、SERVER_LICENSE_REQUEST、SERVER_UPGRADE_LICENSE の各パケット構造など) の詳細については、[MS-RDPELE]: Remote Desktop Protocol: Licensing Extension を参照してください。
クライアントにライセンスを要求します。
| Reserve1 | BYTE* | in | クライアントが処理できる追加データを格納するバイト配列へのポインター。 |
| Reserve2 | DWORD | in | Reserve1 パラメーターで指定されるデータのサイズ (バイト単位) を格納する整数。 |
| ppClientLicense | BYTE* | out | ライセンス要求を格納するバイト配列へのポインター。 |
| pcbClientLicense | DWORD* | inout | ppClientLicense パラメーターで指定される要求のサイズ (バイト単位) を格納する整数。 |
戻り値
このメソッドを実装する際は、関数が成功した場合は S_OK を返してください。失敗した場合は、エラーを示す HRESULT 値を返してください。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
解説(Remarks)
この呼び出しで交換されるバイト配列 (CLIENT_LICENSE_INFO、CLIENT_NEW_LICENSE_REQUEST、CLIENT_PLATFORM_CHALLENGE_RESPONSE の各パケット構造など) の詳細については、[MS-RDPELE]: Remote Desktop Protocol: Licensing Extension を参照してください。
ライセンス処理が正常に完了したかどうかをプロトコルに通知します。
| ulComplete | DWORD | in | ライセンス処理が正常に終了したかどうかを指定する整数。値 1 は成功を意味します。それ以外のすべての値は失敗を示します。 |
戻り値
このメソッドを実装する際は、関数が成功した場合は S_OK を返してください。失敗した場合は、エラーを示す HRESULT 値を返してください。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWRdsProtocolLicenseConnection "{1D6A145F-D095-4424-957A-407FAE822D84}" #usecom global IWRdsProtocolLicenseConnection IID_IWRdsProtocolLicenseConnection "{}" #comfunc global IWRdsProtocolLicenseConnection_RequestLicensingCapabilities 3 var,var #comfunc global IWRdsProtocolLicenseConnection_SendClientLicense 4 var,int #comfunc global IWRdsProtocolLicenseConnection_RequestClientLicense 5 var,int,var,var #comfunc global IWRdsProtocolLicenseConnection_ProtocolComplete 6 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWRdsProtocolLicenseConnection "{1D6A145F-D095-4424-957A-407FAE822D84}" #usecom global IWRdsProtocolLicenseConnection IID_IWRdsProtocolLicenseConnection "{}" #comfunc global IWRdsProtocolLicenseConnection_RequestLicensingCapabilities 3 sptr,sptr #comfunc global IWRdsProtocolLicenseConnection_SendClientLicense 4 sptr,int #comfunc global IWRdsProtocolLicenseConnection_RequestClientLicense 5 sptr,int,sptr,sptr #comfunc global IWRdsProtocolLicenseConnection_ProtocolComplete 6 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。