blob: 8901defba4fb12bb51957f289c8e936d130f57da [file] [log] [blame]
/**
* 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) */")