|  | /** | 
|  | * This file has no copyright assigned and is placed in the Public Domain. | 
|  | * This file is part of the mingw-w64 runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
|  | */ | 
|  |  | 
|  | cpp_quote("#include <winapifamily.h>") | 
|  |  | 
|  | cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") | 
|  |  | 
|  | import "wtypes.idl"; | 
|  | import "shobjidl.idl"; | 
|  | import "propsys.idl"; | 
|  | import "unknwn.idl"; | 
|  |  | 
|  | [v1_enum] typedef enum _CREDENTIAL_PROVIDER_USAGE_SCENARIO { | 
|  | CPUS_INVALID = 0, | 
|  | CPUS_LOGON, | 
|  | CPUS_UNLOCK_WORKSTATION, | 
|  | CPUS_CHANGE_PASSWORD, | 
|  | CPUS_CREDUI, | 
|  | CPUS_PLAP, | 
|  | } CREDENTIAL_PROVIDER_USAGE_SCENARIO; | 
|  |  | 
|  | [v1_enum] typedef enum _CREDENTIAL_PROVIDER_FIELD_TYPE { | 
|  | CPFT_INVALID = 0, | 
|  | CPFT_LARGE_TEXT, | 
|  | CPFT_SMALL_TEXT, | 
|  | CPFT_COMMAND_LINK, | 
|  | CPFT_EDIT_TEXT, | 
|  | CPFT_PASSWORD_TEXT, | 
|  | CPFT_TILE_IMAGE, | 
|  | CPFT_CHECKBOX, | 
|  | CPFT_COMBOBOX, | 
|  | CPFT_SUBMIT_BUTTON, | 
|  | } CREDENTIAL_PROVIDER_FIELD_TYPE; | 
|  |  | 
|  | [v1_enum] typedef enum _CREDENTIAL_PROVIDER_FIELD_STATE { | 
|  | CPFS_HIDDEN = 0, | 
|  | CPFS_DISPLAY_IN_SELECTED_TILE, | 
|  | CPFS_DISPLAY_IN_DESELECTED_TILE, | 
|  | CPFS_DISPLAY_IN_BOTH, | 
|  | } CREDENTIAL_PROVIDER_FIELD_STATE; | 
|  |  | 
|  | [v1_enum] typedef enum _CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE { | 
|  | CPFIS_NONE = 0, | 
|  | CPFIS_READONLY, | 
|  | CPFIS_DISABLED, | 
|  | CPFIS_FOCUSED, | 
|  | } CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE; | 
|  |  | 
|  | typedef struct _CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR { | 
|  | DWORD dwFieldID; | 
|  | CREDENTIAL_PROVIDER_FIELD_TYPE cpft; | 
|  | LPWSTR pszLabel; | 
|  | GUID guidFieldType; | 
|  | } CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR; | 
|  |  | 
|  | [v1_enum] typedef enum _CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE { | 
|  | CPGSR_NO_CREDENTIAL_NOT_FINISHED, | 
|  | CPGSR_NO_CREDENTIAL_FINISHED, | 
|  | CPGSR_RETURN_CREDENTIAL_FINISHED, | 
|  | CPGSR_RETURN_NO_CREDENTIAL_FINISHED, | 
|  | } CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE; | 
|  |  | 
|  | [v1_enum] typedef enum _CREDENTIAL_PROVIDER_STATUS_ICON { | 
|  | CPSI_NONE = 0, | 
|  | CPSI_ERROR, | 
|  | CPSI_WARNING, | 
|  | CPSI_SUCCESS, | 
|  | } CREDENTIAL_PROVIDER_STATUS_ICON; | 
|  |  | 
|  | typedef struct _CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION { | 
|  | ULONG ulAuthenticationPackage; | 
|  | GUID clsidCredentialProvider; | 
|  | ULONG cbSerialization; | 
|  | [size_is(cbSerialization)] byte* rgbSerialization; | 
|  | } CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION; | 
|  |  | 
|  | cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)") | 
|  | [v1_enum] typedef enum CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS { | 
|  | CPAO_NONE = 0x00000000, | 
|  | CPAO_EMPTY_LOCAL = 0x00000001, | 
|  | CPAO_EMPTY_CONNECTED = 0x00000002, | 
|  | } CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS; | 
|  | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS)") | 
|  |  | 
|  | [v1_enum] typedef enum CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS { | 
|  | CPCFO_NONE = 0x00000000, | 
|  | CPCFO_ENABLE_PASSWORD_REVEAL = 0x00000001, | 
|  | CPCFO_IS_EMAIL_ADDRESS = 0x00000002, | 
|  | CPCFO_ENABLE_TOUCH_KEYBOARD_AUTO_INVOKE = 0x00000004, | 
|  | CPCFO_NUMBERS_ONLY = 0x00000008, | 
|  | CPCFO_SHOW_ENGLISH_KEYBOARD = 0x00000010, | 
|  | } CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS; | 
|  | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS)") | 
|  | cpp_quote("#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */") | 
|  |  | 
|  | cpp_quote("#ifdef __WIDL__") | 
|  | typedef LONG NTSTATUS; | 
|  | cpp_quote("#else") | 
|  | cpp_quote("#ifndef NTSTATUS") | 
|  | cpp_quote("typedef LONG NTSTATUS;") | 
|  | cpp_quote("#endif") | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | cpp_quote("#define CREDENTIAL_PROVIDER_NO_DEFAULT ((DWORD)-1)") | 
|  |  | 
|  | interface ICredentialProviderCredentialEvents; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | pointer_default(ref), | 
|  | uuid(63913a93-40c1-481a-818d-4072ff8c70cc), | 
|  | ] | 
|  | interface ICredentialProviderCredential : IUnknown | 
|  | { | 
|  | HRESULT Advise([in] ICredentialProviderCredentialEvents* pcpce); | 
|  | HRESULT UnAdvise(); | 
|  |  | 
|  | HRESULT SetSelected([out] WINBOOL* pbAutoLogon); | 
|  | HRESULT SetDeselected(); | 
|  |  | 
|  | HRESULT GetFieldState([in] DWORD dwFieldID, | 
|  | [out] CREDENTIAL_PROVIDER_FIELD_STATE* pcpfs, | 
|  | [out] CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE* pcpfis); | 
|  |  | 
|  | HRESULT GetStringValue([in] DWORD dwFieldID, [out, string] LPWSTR* ppsz); | 
|  | HRESULT GetBitmapValue([in] DWORD dwFieldID, [out] HBITMAP* phbmp); | 
|  | HRESULT GetCheckboxValue([in] DWORD dwFieldID, [out] WINBOOL* pbChecked, [out, string] LPWSTR* ppszLabel); | 
|  | HRESULT GetSubmitButtonValue([in] DWORD dwFieldID, [out] DWORD* pdwAdjacentTo); | 
|  |  | 
|  | HRESULT GetComboBoxValueCount([in] DWORD dwFieldID, [out] DWORD* pcItems, [out] DWORD* pdwSelectedItem); | 
|  | HRESULT GetComboBoxValueAt([in] DWORD dwFieldID, DWORD dwItem, [out, string] LPWSTR* ppszItem); | 
|  |  | 
|  | HRESULT SetStringValue([in] DWORD dwFieldID, [in, string] LPCWSTR psz); | 
|  | HRESULT SetCheckboxValue([in] DWORD dwFieldID, [in] WINBOOL bChecked); | 
|  | HRESULT SetComboBoxSelectedValue([in] DWORD dwFieldID, [in] DWORD dwSelectedItem); | 
|  | HRESULT CommandLinkClicked([in] DWORD dwFieldID); | 
|  |  | 
|  | HRESULT GetSerialization([out] CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE* pcpgsr, | 
|  | [out] CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs, | 
|  | [out] LPWSTR* ppszOptionalStatusText, | 
|  | [out] CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon); | 
|  | HRESULT ReportResult([in] NTSTATUS ntsStatus, | 
|  | [in] NTSTATUS ntsSubstatus, | 
|  | [out] LPWSTR* ppszOptionalStatusText, | 
|  | [out] CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | pointer_default(ref), | 
|  | uuid(9090be5b-502b-41fb-bccc-0049a6c7254b), | 
|  | ] | 
|  | interface IQueryContinueWithStatus : IQueryContinue | 
|  | { | 
|  | HRESULT SetStatusMessage([in, string] LPCWSTR psz); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | pointer_default(ref), | 
|  | uuid(9387928b-ac75-4bf9-8ab2-2b93c4a55290), | 
|  | ] | 
|  | interface IConnectableCredentialProviderCredential : ICredentialProviderCredential | 
|  | { | 
|  | HRESULT Connect([in] IQueryContinueWithStatus* pqcws); | 
|  | HRESULT Disconnect(); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | pointer_default(ref), | 
|  | uuid(fa6fa76b-66b7-4b11-95f1-86171118e816), | 
|  | ] | 
|  | interface ICredentialProviderCredentialEvents : IUnknown | 
|  | { | 
|  | HRESULT SetFieldState([in] ICredentialProviderCredential* pcpc, | 
|  | [in] DWORD dwFieldID, | 
|  | [in] CREDENTIAL_PROVIDER_FIELD_STATE cpfs); | 
|  | HRESULT SetFieldInteractiveState([in] ICredentialProviderCredential* pcpc, | 
|  | [in] DWORD dwFieldID, | 
|  | [in] CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE cpfis); | 
|  |  | 
|  | HRESULT SetFieldString([in] ICredentialProviderCredential* pcpc, | 
|  | [in] DWORD dwFieldID, | 
|  | [in, string, unique] LPCWSTR psz); | 
|  | HRESULT SetFieldCheckbox([in] ICredentialProviderCredential* pcpc, | 
|  | [in] DWORD dwFieldID, | 
|  | [in] WINBOOL bChecked, | 
|  | [in] LPCWSTR pszLabel); | 
|  | HRESULT SetFieldBitmap([in] ICredentialProviderCredential* pcpc, | 
|  | [in] DWORD dwFieldID, | 
|  | [in] HBITMAP hbmp); | 
|  |  | 
|  | HRESULT SetFieldComboBoxSelectedItem([in] ICredentialProviderCredential* pcpc, | 
|  | [in] DWORD dwFieldID, | 
|  | [in] DWORD dwSelectedItem); | 
|  | HRESULT DeleteFieldComboBoxItem([in] ICredentialProviderCredential* pcpc, | 
|  | [in] DWORD dwFieldID, | 
|  | [in] DWORD dwItem); | 
|  | HRESULT AppendFieldComboBoxItem([in] ICredentialProviderCredential* pcpc, | 
|  | [in] DWORD dwFieldID, | 
|  | [in, string] LPCWSTR pszItem); | 
|  |  | 
|  | HRESULT SetFieldSubmitButton([in] ICredentialProviderCredential* pcpc, | 
|  | [in] DWORD dwFieldID, | 
|  | [in] DWORD dwAdjacentTo); | 
|  | HRESULT OnCreatingWindow([out] HWND* phwndOwner); | 
|  | } | 
|  |  | 
|  | interface ICredentialProviderEvents; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | pointer_default(ref), | 
|  | uuid(d27c3481-5a1c-45b2-8aaa-c20ebbe8229e), | 
|  | ] | 
|  | interface ICredentialProvider : IUnknown | 
|  | { | 
|  | HRESULT SetUsageScenario([in] CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus, | 
|  | [in] DWORD dwFlags); | 
|  | HRESULT SetSerialization([in] const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs); | 
|  |  | 
|  | HRESULT Advise([in] ICredentialProviderEvents* pcpe, [in] UINT_PTR upAdviseContext); | 
|  | HRESULT UnAdvise(); | 
|  |  | 
|  | HRESULT GetFieldDescriptorCount([out] DWORD* pdwCount); | 
|  | HRESULT GetFieldDescriptorAt([in] DWORD dwIndex, | 
|  | [out] CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd); | 
|  |  | 
|  | HRESULT GetCredentialCount([out] DWORD* pdwCount, | 
|  | [out] DWORD* pdwDefault, | 
|  | [out] WINBOOL* pbAutoLogonWithDefault); | 
|  | HRESULT GetCredentialAt([in] DWORD dwIndex, | 
|  | [out] ICredentialProviderCredential** ppcpc); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | pointer_default(ref), | 
|  | uuid(34201e5a-a787-41a3-a5a4-bd6dcf2a854e), | 
|  | ] | 
|  | interface ICredentialProviderEvents : IUnknown | 
|  | { | 
|  | HRESULT CredentialsChanged([in] UINT_PTR upAdviseContext); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | pointer_default(ref), | 
|  | uuid(a5da53f9-d475-4080-a120-910c4a739880), | 
|  | ] | 
|  | interface ICredentialProviderFilter : IUnknown | 
|  | { | 
|  | HRESULT Filter([in] CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus, | 
|  | [in] DWORD dwFlags, | 
|  | [in, size_is(cProviders)] GUID* rgclsidProviders, | 
|  | [in, out, size_is(cProviders)] WINBOOL* rgbAllow, | 
|  | [in] DWORD cProviders); | 
|  | HRESULT UpdateRemoteCredential([in] const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcsIn, | 
|  | [out] CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcsOut); | 
|  | } | 
|  |  | 
|  | cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)") | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | pointer_default(ref), | 
|  | uuid(fd672c54-40ea-4d6e-9b49-cfb1a7507bd7), | 
|  | ] | 
|  | interface ICredentialProviderCredential2 : ICredentialProviderCredential | 
|  | { | 
|  | HRESULT GetUserSid([out, string] LPWSTR *sid); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | pointer_default(ref), | 
|  | uuid(dbc6fb30-c843-49e3-a645-573e6f39446a), | 
|  | ] | 
|  | interface ICredentialProviderCredentialWithFieldOptions : IUnknown | 
|  | { | 
|  | HRESULT GetFieldOptions([in] DWORD fieldID, | 
|  | [out] CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS *options); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | pointer_default(ref), | 
|  | uuid(b53c00b6-9922-4b78-b1f4-ddfe774dc39b), | 
|  | ] | 
|  | interface ICredentialProviderCredentialEvents2 : ICredentialProviderCredentialEvents | 
|  | { | 
|  | HRESULT BeginFieldUpdates(); | 
|  | HRESULT EndFieldUpdates(); | 
|  | HRESULT SetFieldOptions([in] ICredentialProviderCredential *credential, | 
|  | [in] DWORD fieldID, | 
|  | [in] CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS options); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | uuid(13793285-3ea6-40fd-b420-15f47da41fbb), | 
|  | object, | 
|  | pointer_default(ref), | 
|  | ] | 
|  | interface ICredentialProviderUser : IUnknown | 
|  | { | 
|  | HRESULT GetSid([out, string] LPWSTR *sid); | 
|  | HRESULT GetProviderID([out] GUID *providerID); | 
|  | HRESULT GetStringValue([in] REFPROPERTYKEY key, [out, string] LPWSTR *stringValue); | 
|  | HRESULT GetValue([in] REFPROPERTYKEY key, [out] PROPVARIANT *value); | 
|  | } | 
|  |  | 
|  | cpp_quote("DEFINE_GUID(Identity_LocalUserProvider, 0xA198529B, 0x730F, 0x4089, 0xB6, 0x46, 0xA1, 0x25, 0x57, 0xF5, 0x66, 0x5E);") | 
|  |  | 
|  | [ | 
|  | local, | 
|  | uuid(90c119ae-0f18-4520-a1f1-114366a40fe8), | 
|  | object, | 
|  | pointer_default(ref), | 
|  | ] | 
|  | interface ICredentialProviderUserArray : IUnknown | 
|  | { | 
|  | HRESULT SetProviderFilter([in] REFGUID guidProviderToFilterTo); | 
|  | HRESULT GetAccountOptions([out] CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS *credentialProviderAccountOptions); | 
|  | HRESULT GetCount([out] DWORD *userCount); | 
|  | HRESULT GetAt([in] DWORD userIndex, [out] ICredentialProviderUser **user); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | uuid(095c1484-1c0c-4388-9c6d-500e61bf84bd), | 
|  | object, | 
|  | pointer_default(ref), | 
|  | ] | 
|  | interface ICredentialProviderSetUserArray : IUnknown | 
|  | { | 
|  | HRESULT SetUserArray([in] ICredentialProviderUserArray *users); | 
|  | } | 
|  |  | 
|  | cpp_quote("#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */") | 
|  |  | 
|  | [ | 
|  | uuid(d545db01-e522-4a63-af83-d8ddf954004f), | 
|  | ] | 
|  | library CredentialProviders | 
|  | { | 
|  | [uuid(60b78e88-ead8-445c-9cfd-0b87f74ea6cd)] | 
|  | coclass PasswordCredentialProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(6f45dc1e-5384-457a-bc13-2cd81b0d28ed)] | 
|  | coclass V1PasswordCredentialProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(cb82ea12-9f71-446d-89e1-8d0924e1256e)] | 
|  | coclass PINLogonCredentialProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(3dd6bec0-8193-4ffe-ae25-e08e39ea4063)] | 
|  | coclass NPCredentialProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(8fd7e19c-3bf7-489b-a72c-846ab3678c96)] | 
|  | coclass SmartcardCredentialProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(8bf9a910-a8ff-457f-999f-a5ca10b4a885)] | 
|  | coclass V1SmartcardCredentialProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(94596c7e-3744-41ce-893e-bbf09122f76a)] | 
|  | coclass SmartcardPinProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(1b283861-754f-4022-ad47-a5eaaa618894)] | 
|  | coclass SmartcardReaderSelectionProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(1ee7337f-85ac-45e2-a23c-37c753209769)] | 
|  | coclass SmartcardWinRTProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(25CBB996-92ED-457e-B28C-4774084BD562)] | 
|  | coclass GenericCredentialProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(5537e283-b1e7-4ef8-9c6e-7ab0afe5056d)] | 
|  | coclass RASProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(07aa0886-cc8d-4e19-a410-1c75af686e62)] | 
|  | coclass OnexCredentialProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(33c86cd6-705f-4ba1-9adb-67070b837775)] | 
|  | coclass OnexPlapSmartcardCredentialProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(503739d0-4c5e-4cfd-b3ba-d881334f0df2)] | 
|  | coclass VaultProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(bec09223-b018-416d-a0ac-523971b639f5)] | 
|  | coclass WinBioCredentialProvider { interface ICredentialProvider; } | 
|  |  | 
|  | [uuid(ac3ac249-e820-4343-a65b-377ac634dc09)] | 
|  | coclass V1WinBioCredentialProvider { interface ICredentialProvider; } | 
|  | } | 
|  |  | 
|  | cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */") |