IWRdsProtocolLogonErrorRedirector
COM公式ドキュメント
Remote Desktop Services サービスがログオン状態を更新し、ログオンエラーメッセージの誘導方法を決定するために呼び出すメソッドを公開します。
解説(Remarks)
このインターフェイスのメソッドを呼び出す際にデッドロックが発生する可能性を回避するため、直接的または間接的に Remote Desktop Services API の呼び出しにつながる関数呼び出しやメソッド呼び出しを行わないでください。外部への呼び出しを行う必要がある場合は、新しいスレッドを開始し、その新しいスレッドから外部への呼び出しを行ってください。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ログオンユーザーインターフェイスの描画を開始する準備ができたことをプロトコルに通知します。
戻り値
このメソッドを実装する場合、関数が成功したときは S_OK を返します。失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
クライアントのログオン状態更新をどのようにリダイレクトするかについてプロトコルに問い合わせます。
| pszMessage | LPWSTR | in | ログオン状態メッセージを格納する文字列へのポインター。 |
| pResponse | WTS_LOGON_ERROR_REDIRECTOR_RESPONSE* | out | 応答を格納する WRDS_LOGON_ERROR_REDIRECTOR_RESPONSE 列挙型へのポインター。 |
戻り値
このメソッドを実装する場合、関数が成功したときは S_OK を返します。失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
ログオンメッセージをどのようにリダイレクトするかについてプロトコルに問い合わせます。
| pszCaption | LPWSTR | in | メッセージボックスのキャプションを格納する文字列へのポインター。 |
| pszMessage | LPWSTR | in | ログオンメッセージを格納する文字列へのポインター。 |
| uType | DWORD | in | メッセージボックスの種類を格納する整数。詳細については、MessageBox 関数を参照してください。 |
| pResponse | WTS_LOGON_ERROR_REDIRECTOR_RESPONSE* | out | ログオンメッセージのリダイレクトに対する推奨応答を Remote Desktop Services サービスに指定する WRDS_LOGON_ERROR_REDIRECTOR_RESPONSE 列挙型へのポインター。 |
戻り値
このメソッドを実装する場合、関数が成功したときは S_OK を返します。失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。
ログオンエラーに対して実行すべきアクションをプロトコルに問い合わせます。
| ntsStatus | INT | in | ログオン失敗に関する情報を格納する整数。次のいずれかの値になります。 STATUS_QUOTA_EXCEEDED認証パッケージが返す出力バッファーを割り当てるにはメモリクォータが不足しています。 STATUS_ACCOUNT_RESTRICTIONユーザーアカウントとパスワードは正当ですが、ユーザーアカウントには現時点でのログオンを妨げる制限があります。詳細については、ntsSubstatus パラメーターを参照してください。 STATUS_BAD_VALIDATION_CLASS指定された認証情報が認証パッケージによって認識されません。 STATUS_LOGON_FAILUREログオンの試行に失敗しました。失敗の理由は指定されませんが、一般的な理由としてユーザー名の入力ミスやパスワードの入力ミスが挙げられます。 STATUS_NO_LOGON_SERVERS認証要求を処理できるドメインコントローラーがありません。 STATUS_NO_SUCH_PACKAGE指定された認証パッケージが LSA によって認識されません。 |
| ntsSubstatus | INT | in | ログオンの試行が失敗した理由に関する情報を格納する整数。この値は、ユーザーのアカウント情報が有効でログオンが拒否された場合にのみ設定されます。次のいずれかの値を格納できます。 STATUS_INVALID_LOGON_HOURSユーザーアカウントには時間帯の制限があり、現時点ではログオンに使用できません。 STATUS_INVALID_WORKSTATIONユーザーアカウントにはワークステーションの制限があり、現在のワークステーションからのログオンには使用できません。 STATUS_PASSWORD_EXPIREDユーザーアカウントのパスワードの有効期限が切れています。 STATUS_ACCOUNT_DISABLEDユーザーアカウントは現在無効化されており、ログオンに使用できません。 |
| pszCaption | LPWSTR | in | メッセージボックスのキャプションを格納する文字列へのポインター。 |
| pszMessage | LPWSTR | in | メッセージを格納する文字列へのポインター。 |
| uType | DWORD | in | メッセージボックスの種類を格納する整数。詳細については、MessageBox 関数を参照してください。 |
| pResponse | WTS_LOGON_ERROR_REDIRECTOR_RESPONSE* | out | ログオンエラーに対する推奨応答を Remote Desktop Services サービスに指定する WRDS_LOGON_ERROR_REDIRECTOR_RESPONSE 列挙型へのポインター。 |
戻り値
このメソッドを実装する場合、関数が成功したときは 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_IWRdsProtocolLogonErrorRedirector "{519FE83B-142A-4120-A3D5-A405D315281A}" #usecom global IWRdsProtocolLogonErrorRedirector IID_IWRdsProtocolLogonErrorRedirector "{}" #comfunc global IWRdsProtocolLogonErrorRedirector_OnBeginPainting 3 #comfunc global IWRdsProtocolLogonErrorRedirector_RedirectStatus 4 wstr,var #comfunc global IWRdsProtocolLogonErrorRedirector_RedirectMessage 5 wstr,wstr,int,var #comfunc global IWRdsProtocolLogonErrorRedirector_RedirectLogonError 6 int,int,wstr,wstr,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWRdsProtocolLogonErrorRedirector "{519FE83B-142A-4120-A3D5-A405D315281A}" #usecom global IWRdsProtocolLogonErrorRedirector IID_IWRdsProtocolLogonErrorRedirector "{}" #comfunc global IWRdsProtocolLogonErrorRedirector_OnBeginPainting 3 #comfunc global IWRdsProtocolLogonErrorRedirector_RedirectStatus 4 wstr,sptr #comfunc global IWRdsProtocolLogonErrorRedirector_RedirectMessage 5 wstr,wstr,int,sptr #comfunc global IWRdsProtocolLogonErrorRedirector_RedirectLogonError 6 int,int,wstr,wstr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。