IWRdsProtocolConnectionCallback
COM公式ドキュメント
クライアント接続の状態に関する情報を提供し、クライアントに対する操作を実行するメソッドを公開します。このインターフェイスは Remote Desktop Services サービスによって実装され、プロトコルから呼び出されます。
解説(Remarks)
このインターフェイスのいずれかのメソッドを呼び出す際にデッドロックが発生する可能性を回避するため、直接的または間接的に Remote Desktop Services API の呼び出しを引き起こす関数呼び出しやメソッド呼び出しを行わないでください。外部への呼び出しを行う必要がある場合は、新しいスレッドを開始し、その新しいスレッドから外部への呼び出しを行ってください。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Remote Desktop Services サービスに対して、そのクライアントの接続処理を継続するよう要求します。
戻り値
関数が成功した場合、関数は S_OK を返します。
関数が失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、「Common HRESULT Values」を参照してください。
解説(Remarks)
プロトコルは、Remote Desktop Services サービスが GetLogonErrorRedirector を呼び出した後で、このメソッドを呼び出す必要があります。Remote Desktop Services サービスは、OnReady が呼び出されるまで、接続処理を継続するための AcceptConnection を呼び出しません。
クライアント接続が失われたことを Remote Desktop Services サービスに通知します。
| Reason | DWORD | in | このパラメーターは使用されません。 |
| Source | DWORD | in | このパラメーターは使用されません。 |
戻り値
関数が成功した場合、関数は S_OK を返します。
関数が失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、「Common HRESULT Values」を参照してください。
Remote Desktop Services サービスに対して、クライアント画面の更新を停止するよう要求します。
戻り値
関数が成功した場合、関数は S_OK を返します。
関数が失敗した場合は、エラーを示す HRESULT 値を返します。取り得る値には、以下の一覧に示すものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、「Common HRESULT Values」を参照してください。
解説(Remarks)
このメソッドを呼び出す際にデッドロックを回避するには、次のようにします。
- 呼び出しを行うための別個のスレッドを作成します。実装しているプロトコルメソッドの内部からこの呼び出しを行わないでください。
- Remote Desktop Services サービスによる別の呼び出しに応答する前に、このメソッドでブロックしないでください。
Remote Desktop Services サービスに対して、クライアントウィンドウを再描画するよう要求します。
| rect | WTS_SMALL_RECT* | in | 再描画する画面の x 座標と y 座標を格納する WRDS_SMALL_RECT 構造体です。NULL 値を指定すると、画面全体の再描画が要求されます。 |
戻り値
関数が成功した場合、関数は S_OK を返します。
関数が失敗した場合は、エラーを示す HRESULT 値を返します。取り得る値には、以下の一覧に示すものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、「Common HRESULT Values」を参照してください。
解説(Remarks)
このメソッドは通常、StopScreenUpdates メソッドの後で呼び出されます。
このメソッドを呼び出す際にデッドロックを回避するには、次のようにします。
- 呼び出しを行うための別個のスレッドを作成します。実装しているプロトコルメソッドの内部からこの呼び出しを行わないでください。
- Remote Desktop Services サービスによる別の呼び出しに応答する前に、このメソッドでブロックしないでください。
接続識別子を取得します。
| pConnectionId | DWORD* | out | 接続識別子を受け取る ULONG 変数のアドレスです。 |
戻り値
このメソッドが成功した場合は、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWRdsProtocolConnectionCallback "{F1D70332-D070-4EF1-A088-78313536C2D6}" #usecom global IWRdsProtocolConnectionCallback IID_IWRdsProtocolConnectionCallback "{}" #comfunc global IWRdsProtocolConnectionCallback_OnReady 3 #comfunc global IWRdsProtocolConnectionCallback_BrokenConnection 4 int,int #comfunc global IWRdsProtocolConnectionCallback_StopScreenUpdates 5 #comfunc global IWRdsProtocolConnectionCallback_RedrawWindow 6 var #comfunc global IWRdsProtocolConnectionCallback_GetConnectionId 7 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWRdsProtocolConnectionCallback "{F1D70332-D070-4EF1-A088-78313536C2D6}" #usecom global IWRdsProtocolConnectionCallback IID_IWRdsProtocolConnectionCallback "{}" #comfunc global IWRdsProtocolConnectionCallback_OnReady 3 #comfunc global IWRdsProtocolConnectionCallback_BrokenConnection 4 int,int #comfunc global IWRdsProtocolConnectionCallback_StopScreenUpdates 5 #comfunc global IWRdsProtocolConnectionCallback_RedrawWindow 6 sptr #comfunc global IWRdsProtocolConnectionCallback_GetConnectionId 7 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。