以下是 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