ICredentialProviderCredentialEvents
COM公式ドキュメント
資格情報が、ログオン UI または資格情報 UI における状態変更やテキスト変更のイベントを通知するために使用する、非同期のコールバック機構を提供します。
解説(Remarks)
これらのメソッドは、第 1 引数として this を渡す資格情報からのみ呼び出す必要があります。Advise の呼び出しによってアクティブ化された資格情報以外を使用してこれらのメソッドを呼び出そうとした場合、動作は未定義です。資格情報プロバイダーが別のスレッド上に情報を持ち、そのスレッドのログオン UI または資格情報 UI を通じて通信したい場合、その要求は Advise の呼び出しを受け取った資格情報を経由する必要があります。
実装するタイミング
サードパーティが ICredentialProviderCredentialEvents を実装することはありません。実装は Windows に付属しています。メソッド 10
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
フィールドの状態が変化したこと、および UI を更新する必要があることを、ログオン UI または資格情報 UI に通知します。
| pcpc | ICredentialProviderCredential* | in | 状態を設定するフィールドを含む資格情報。この値は this に設定する必要があります。詳細については ICredentialProviderCredentialEvents を参照してください。 |
| dwFieldID | DWORD | in | イベントを生成する変更が発生したフィールドの一意の ID。 |
| cpfs | CREDENTIAL_PROVIDER_FIELD_STATE | in | 新しいフィールド状態を指定する CREDENTIAL_PROVIDER_FIELD_STATE 列挙型の値。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
フィールドの操作可能状態が変化したこと、および UI を更新する必要があることを、ログオン UI または資格情報 UI に通知します。
| pcpc | ICredentialProviderCredential* | in | 操作可能状態を設定するフィールドを含む資格情報。この値は this に設定する必要があります。詳細については ICredentialProviderCredentialEvents を参照してください。 |
| dwFieldID | DWORD | in | フィールドの一意の ID。 |
| cpfis | CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE | in | フィールドの新しい操作可能状態。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
フィールドに関連付けられた文字列が変化したこと、および UI を更新する必要があることを、ログオン UI または資格情報 UI に通知します。
| pcpc | ICredentialProviderCredential* | in | 操作可能状態を設定するフィールドを含む資格情報。この値は this に設定する必要があります。詳細については ICredentialProviderCredentialEvents を参照してください。 |
| dwFieldID | DWORD | in | 文字列を設定する対象フィールドの一意の ID。 |
| psz | LPWSTR | in | フィールドの新しい文字列へのポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
チェックボックスフィールドが変化したこと、および UI を更新する必要があることを、ログオン UI または資格情報 UI に通知します。
| pcpc | ICredentialProviderCredential* | in | 設定するチェックボックスフィールドを含む資格情報。この値は this に設定する必要があります。詳細については ICredentialProviderCredentialEvents を参照してください。 |
| dwFieldID | DWORD | in | チェックボックスの一意のフィールド ID。 |
| bChecked | BOOL | in | チェックボックスの新しい状態。TRUE はチェックボックスをオンにすべきことを示し、FALSE はオンにすべきでないことを示します。 |
| pszLabel | LPWSTR | in | チェックボックスラベルの新しい文字列。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
タイル画像フィールドが変化したこと、および UI を更新する必要があることを、ログオン UI または資格情報 UI に通知します。
| pcpc | ICredentialProviderCredential* | in | 設定するタイル画像フィールドを含む資格情報。この値は this に設定する必要があります。詳細については ICredentialProviderCredentialEvents を参照してください。 |
| dwFieldID | DWORD | in | タイル画像フィールドの一意の ID。 |
| hbmp | HBITMAP | in | 新しいタイル画像。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
コンボボックスで選択されている項目が変化したこと、および UI を更新する必要があることを、ログオン UI または資格情報 UI に通知します。
| pcpc | ICredentialProviderCredential* | in | 設定するコンボボックスを含む資格情報。この値は this に設定する必要があります。詳細については ICredentialProviderCredentialEvents を参照してください。 |
| dwFieldID | DWORD | in | コンボボックスの一意の ID。 |
| dwSelectedItem | DWORD | in | コンボボックスで選択する項目のインデックス。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
コンボボックスから項目を削除する必要があること、および UI を更新する必要があることを、ログオン UI または資格情報 UI に通知します。
| pcpc | ICredentialProviderCredential* | in | 更新が必要なコンボボックスを含む資格情報。この値は this に設定する必要があります。詳細については ICredentialProviderCredentialEvents を参照してください。 |
| dwFieldID | DWORD | in | コンボボックスの一意の ID。 |
| dwItem | DWORD | in | 削除される項目のインデックス。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
コンボボックスに項目を追加する必要があること、および UI を更新する必要があることを、ログオン UI または資格情報 UI に通知します。
| pcpc | ICredentialProviderCredential* | in | 項目の追加が必要なコンボボックスを含む資格情報。この値は this に設定する必要があります。詳細については ICredentialProviderCredentialEvents を参照してください。 |
| dwFieldID | DWORD | in | コンボボックスの一意の ID。 |
| pszItem | LPWSTR | in | 新しい選択肢としてコンボボックスに追加される文字列。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
送信ボタンを隣接して表示するフィールドを、資格情報が設定できるようにします。
| pcpc | ICredentialProviderCredential* | in | 送信ボタンの位置を設定する資格情報。この値は this に設定する必要があります。詳細については ICredentialProviderCredentialEvents を参照してください。 |
| dwFieldID | DWORD | in | 送信ボタンの一意のフィールド ID。 |
| dwAdjacentTo | DWORD | in | このメソッドの完了時に送信ボタンを隣接させるフィールドの一意のフィールド ID。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ウィンドウが作成されるときに呼び出されます。Advise が呼び出された後に、資格情報が親ウィンドウの HWND を取得できるようにします。
| phwndOwner | HWND* | out | 親ウィンドウのハンドルへのポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
phwndOwner で返される HWND は、メッセージボックスなどのダイアログボックスの親として使用できます。ダイアログを表示する資格情報プロバイダーは、必ず OnCreatingWindow によって提供される HWND を親にする必要があります。ダイアログボックスを適切に親付けしない資格情報プロバイダーは、タイムアウトが発生した場合に資格情報 UI およびログオン UI を失敗させます。
資格情報 UI およびログオン UI は、2 分間入力を受け取らなかった場合にダイアログボックスをキャンセルすることがあります。タイムアウトが発生した場合にキャンセルできるのは、親ウィンドウへのポインターが正しく割り当てられているときに限られます。
ログオン UI および資格情報 UI は、2 分間入力を受け取らなかったダイアログを自動的にキャンセルします。これは、親ウィンドウへのポインターが正しく割り当てられている場合にのみ可能です。事前ログオンアクセスプロバイダー (PLAP) 画面で IConnectableCredentialProviderCredential::Connect の呼び出しとして表示されるダイアログは、非アクティブが原因でキャンセルされることはありません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ICredentialProviderCredentialEvents "{FA6FA76B-66B7-4B11-95F1-86171118E816}"
#usecom global ICredentialProviderCredentialEvents IID_ICredentialProviderCredentialEvents "{}"
#comfunc global ICredentialProviderCredentialEvents_SetFieldState 3 sptr,int,int
#comfunc global ICredentialProviderCredentialEvents_SetFieldInteractiveState 4 sptr,int,int
#comfunc global ICredentialProviderCredentialEvents_SetFieldString 5 sptr,int,wstr
#comfunc global ICredentialProviderCredentialEvents_SetFieldCheckbox 6 sptr,int,int,wstr
#comfunc global ICredentialProviderCredentialEvents_SetFieldBitmap 7 sptr,int,sptr
#comfunc global ICredentialProviderCredentialEvents_SetFieldComboBoxSelectedItem 8 sptr,int,int
#comfunc global ICredentialProviderCredentialEvents_DeleteFieldComboBoxItem 9 sptr,int,int
#comfunc global ICredentialProviderCredentialEvents_AppendFieldComboBoxItem 10 sptr,int,wstr
#comfunc global ICredentialProviderCredentialEvents_SetFieldSubmitButton 11 sptr,int,int
#comfunc global ICredentialProviderCredentialEvents_OnCreatingWindow 12 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。