ICredentialProviderCredential 接口是 Windows Credential Provider API 的一部分,用于表示 Credential Provider 中的单个凭据对象。Credential Provider 允许开发者实现这个接口以提供用户身份验证方法,并集成到 Windows 登录系统中。

以下是 ICredentialProviderCredential 接口的基本定义:
DECLARE_INTERFACE_IID_(ICredentialProviderCredential, IUnknown)
{
    STDMETHOD(Advise)(
        _In_ ICredentialProviderCredentialEvents *pcpce,
        _In_ UINT_PTR upAdviseContext
    ) PURE;

    STDMETHOD(UnAdvise)() PURE;

    STDMETHOD(SetSelected)(_Out_ BOOL *pbAutoLogon) PURE;

    STDMETHOD(SetDeselected)() PURE;

    STDMETHOD(GetFieldState)(
        _In_ DWORD dwFieldID,
        _Out_ CREDENTIAL_PROVIDER_FIELD_STATE *pcpfs,
        _Out_ CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE *pcpfis
    ) PURE;

    STDMETHOD(GetStringValue)(
        _In_ DWORD dwFieldID,
        _Outptr_result_nullonfailure_ PWSTR *ppwsz
    ) PURE;

    STDMETHOD(GetBitmapValue)(
        _In_ DWORD dwFieldID,
        _Outptr_result_nullonfailure_ HBITMAP *phbmp
    ) PURE;

    STDMETHOD(GetCheckboxValue)(
        _In_ DWORD dwFieldID,
        _Out_ BOOL *pbChecked,
        _Outptr_result_nullonfailure_ PWSTR *ppwszLabel
    ) PURE;

    STDMETHOD(GetComboBoxValueCount)(
        _In_ DWORD dwFieldID,
        _Out_ DWORD *pcItems,
        _Out_ DWORD *pdwSelectedItem
    ) PURE;

    STDMETHOD(GetComboBoxValueAt)(
        _In_ DWORD dwFieldID,
        _In_ DWORD dwItem,
        _Outptr_result_nullonfailure_ PWSTR *ppwszItem
    ) PURE;

    STDMETHOD(GetSubmitButtonValue)(
        _In_ DWORD dwFieldID,
        _Out_ DWORD *pdwAdjacentTo
    ) PURE;

    STDMETHOD(GetSubmitButtonDescription)(
        _In_ DWORD dwFieldID,
        _Outptr_result_nullonfailure_ PWSTR *ppwsz
    ) PURE;

    STDMETHOD(GetIconValue)(
        _In_ DWORD dwFieldID,
        _Outptr_result_nullonfailure_ HICON *phIcon
    ) PURE;

    STDMETHOD(SetValue)(
        _In_ DWORD dwFieldID,
        _In_ PCWSTR pwz
    ) PURE;

    STDMETHOD(GetUserSid)(
        _Outptr_result_nullonfailure_ PWSTR *ppwszSid
    ) PURE;

    STDMETHOD(GetBitmapValue)(
        _In_ DWORD dwFieldID,
        _Outptr_result_nullonfailure_ HBITMAP *phbmp
    ) PURE;
};

这个接口包含了用于与 Credential Provider 凭据对象进行交互的方法,包括设置和获取凭据对象的属性,处理用户输入等。

主要方法包括:

  •  Advise 和 UnAdvise: 用于向凭据对象注册和注销事件通知。

  
  •  SetSelected 和 SetDeselected: 用于通知凭据对象是否被选择。

  
  •  GetFieldState: 获取字段的状态和交互状态。

  
  •  GetStringValue, GetBitmapValue, GetCheckboxValue, GetComboBoxValueCount, GetComboBoxValueAt, GetSubmitButtonValue, GetSubmitButtonDescription, GetIconValue: 用于获取特定字段的值。


  •  SetValue: 用于设置字段的值。

  
  •  GetUserSid: 获取用户的安全标识符(SID)。


这些方法允许开发者实现自定义的凭据对象,以提供与 Windows 登录系统的集成。请注意,具体的实现和使用方式会根据 Credential Provider 的要求和场景而有所不同。如果需要更详细的信息,建议查阅最新的 Microsoft 官方文档或头文件。


转载请注明出处:http://www.zyzy.cn/article/detail/25120/Win32 API/Credentialprovider.h/ICredentialProviderCredential