ICredentialProvider 接口是 Windows Credential Provider API 的核心接口之一,用于创建和管理凭据提供者。Credential Provider 允许开发者实现自定义的用户身份验证方法,并集成到 Windows 登录系统中。

以下是 ICredentialProvider 接口的基本定义:
DECLARE_INTERFACE_IID_(ICredentialProvider, IUnknown)
{
    STDMETHOD(SetUsageScenario)(
        _In_ CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus,
        _In_ DWORD dwFlags
    ) PURE;

    STDMETHOD(SetSerialization)(
        _In_ const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION *pcpcs
    ) PURE;

    STDMETHOD(Advise)(
        _Inout_ ICredentialProviderEvents *pcpe,
        _In_ UINT_PTR upAdviseContext
    ) PURE;

    STDMETHOD(UnAdvise)() PURE;

    STDMETHOD(GetFieldDescriptorCount)(
        _Out_ DWORD *pdwCount
    ) PURE;

    STDMETHOD(GetFieldDescriptorAt)(
        _In_ DWORD dwIndex,
        _Outptr_result_nullonfailure_ CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR **ppcpfd
    ) PURE;

    STDMETHOD(GetCredentialCount)(
        _Out_ DWORD *pdwCount,
        _Out_ DWORD *pdwDefault,
        _Out_ BOOL *pbAutoLogonWithDefault
    ) PURE;

    STDMETHOD(GetCredentialAt)(
        _In_ DWORD dwIndex,
        _Outptr_result_nullonfailure_ ICredentialProviderCredential **ppcpc
    ) PURE;

    STDMETHOD(SetUserArray)(
        _In_ ICredentialProviderUserArray *users
    ) PURE;
};

主要的方法包括:

  •  SetUsageScenario: 设置 Credential Provider 的使用场景,如登录、解锁工作站等。

  
  •  SetSerialization: 设置凭据的序列化信息。

  
  •  Advise 和 UnAdvise: 用于向 Credential Provider 提供者注册和注销事件通知。


  •  GetFieldDescriptorCount 和 GetFieldDescriptorAt: 用于获取字段描述符的数量和具体描述符。


  •  GetCredentialCount、GetCredentialAt: 用于获取凭据对象的数量和具体凭据对象。


  •  SetUserArray: 用于设置用户数组。


这些方法提供了与 Credential Provider 生命周期和事件交互的基本能力。开发者可以通过实现这个接口来创建自定义的 Credential Provider,并集成到 Windows 登录系统中。请注意,具体的实现和使用方式会根据 Credential Provider 的要求和场景而有所不同。如果需要更详细的信息,建议查阅最新的 Microsoft 官方文档或头文件。


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