credentialprovider.idl 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. cpp_quote("#include <winapifamily.h>")
  7. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
  8. import "wtypes.idl";
  9. import "shobjidl.idl";
  10. import "propsys.idl";
  11. import "unknwn.idl";
  12. [v1_enum] typedef enum _CREDENTIAL_PROVIDER_USAGE_SCENARIO {
  13. CPUS_INVALID = 0,
  14. CPUS_LOGON,
  15. CPUS_UNLOCK_WORKSTATION,
  16. CPUS_CHANGE_PASSWORD,
  17. CPUS_CREDUI,
  18. CPUS_PLAP,
  19. } CREDENTIAL_PROVIDER_USAGE_SCENARIO;
  20. [v1_enum] typedef enum _CREDENTIAL_PROVIDER_FIELD_TYPE {
  21. CPFT_INVALID = 0,
  22. CPFT_LARGE_TEXT,
  23. CPFT_SMALL_TEXT,
  24. CPFT_COMMAND_LINK,
  25. CPFT_EDIT_TEXT,
  26. CPFT_PASSWORD_TEXT,
  27. CPFT_TILE_IMAGE,
  28. CPFT_CHECKBOX,
  29. CPFT_COMBOBOX,
  30. CPFT_SUBMIT_BUTTON,
  31. } CREDENTIAL_PROVIDER_FIELD_TYPE;
  32. [v1_enum] typedef enum _CREDENTIAL_PROVIDER_FIELD_STATE {
  33. CPFS_HIDDEN = 0,
  34. CPFS_DISPLAY_IN_SELECTED_TILE,
  35. CPFS_DISPLAY_IN_DESELECTED_TILE,
  36. CPFS_DISPLAY_IN_BOTH,
  37. } CREDENTIAL_PROVIDER_FIELD_STATE;
  38. [v1_enum] typedef enum _CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE {
  39. CPFIS_NONE = 0,
  40. CPFIS_READONLY,
  41. CPFIS_DISABLED,
  42. CPFIS_FOCUSED,
  43. } CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE;
  44. typedef struct _CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR {
  45. DWORD dwFieldID;
  46. CREDENTIAL_PROVIDER_FIELD_TYPE cpft;
  47. LPWSTR pszLabel;
  48. GUID guidFieldType;
  49. } CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR;
  50. [v1_enum] typedef enum _CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE {
  51. CPGSR_NO_CREDENTIAL_NOT_FINISHED,
  52. CPGSR_NO_CREDENTIAL_FINISHED,
  53. CPGSR_RETURN_CREDENTIAL_FINISHED,
  54. CPGSR_RETURN_NO_CREDENTIAL_FINISHED,
  55. } CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE;
  56. [v1_enum] typedef enum _CREDENTIAL_PROVIDER_STATUS_ICON {
  57. CPSI_NONE = 0,
  58. CPSI_ERROR,
  59. CPSI_WARNING,
  60. CPSI_SUCCESS,
  61. } CREDENTIAL_PROVIDER_STATUS_ICON;
  62. typedef struct _CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION {
  63. ULONG ulAuthenticationPackage;
  64. GUID clsidCredentialProvider;
  65. ULONG cbSerialization;
  66. [size_is(cbSerialization)] byte* rgbSerialization;
  67. } CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION;
  68. cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)")
  69. [v1_enum] typedef enum CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS {
  70. CPAO_NONE = 0x00000000,
  71. CPAO_EMPTY_LOCAL = 0x00000001,
  72. CPAO_EMPTY_CONNECTED = 0x00000002,
  73. } CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS;
  74. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS)")
  75. [v1_enum] typedef enum CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS {
  76. CPCFO_NONE = 0x00000000,
  77. CPCFO_ENABLE_PASSWORD_REVEAL = 0x00000001,
  78. CPCFO_IS_EMAIL_ADDRESS = 0x00000002,
  79. CPCFO_ENABLE_TOUCH_KEYBOARD_AUTO_INVOKE = 0x00000004,
  80. CPCFO_NUMBERS_ONLY = 0x00000008,
  81. CPCFO_SHOW_ENGLISH_KEYBOARD = 0x00000010,
  82. } CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS;
  83. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS)")
  84. cpp_quote("#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */")
  85. cpp_quote("#ifdef __WIDL__")
  86. typedef LONG NTSTATUS;
  87. cpp_quote("#else")
  88. cpp_quote("#ifndef NTSTATUS")
  89. cpp_quote("typedef LONG NTSTATUS;")
  90. cpp_quote("#endif")
  91. cpp_quote("#endif")
  92. cpp_quote("#define CREDENTIAL_PROVIDER_NO_DEFAULT ((DWORD)-1)")
  93. interface ICredentialProviderCredentialEvents;
  94. [
  95. local,
  96. object,
  97. pointer_default(ref),
  98. uuid(63913a93-40c1-481a-818d-4072ff8c70cc),
  99. ]
  100. interface ICredentialProviderCredential : IUnknown
  101. {
  102. HRESULT Advise([in] ICredentialProviderCredentialEvents* pcpce);
  103. HRESULT UnAdvise();
  104. HRESULT SetSelected([out] WINBOOL* pbAutoLogon);
  105. HRESULT SetDeselected();
  106. HRESULT GetFieldState([in] DWORD dwFieldID,
  107. [out] CREDENTIAL_PROVIDER_FIELD_STATE* pcpfs,
  108. [out] CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE* pcpfis);
  109. HRESULT GetStringValue([in] DWORD dwFieldID, [out, string] LPWSTR* ppsz);
  110. HRESULT GetBitmapValue([in] DWORD dwFieldID, [out] HBITMAP* phbmp);
  111. HRESULT GetCheckboxValue([in] DWORD dwFieldID, [out] WINBOOL* pbChecked, [out, string] LPWSTR* ppszLabel);
  112. HRESULT GetSubmitButtonValue([in] DWORD dwFieldID, [out] DWORD* pdwAdjacentTo);
  113. HRESULT GetComboBoxValueCount([in] DWORD dwFieldID, [out] DWORD* pcItems, [out] DWORD* pdwSelectedItem);
  114. HRESULT GetComboBoxValueAt([in] DWORD dwFieldID, DWORD dwItem, [out, string] LPWSTR* ppszItem);
  115. HRESULT SetStringValue([in] DWORD dwFieldID, [in, string] LPCWSTR psz);
  116. HRESULT SetCheckboxValue([in] DWORD dwFieldID, [in] WINBOOL bChecked);
  117. HRESULT SetComboBoxSelectedValue([in] DWORD dwFieldID, [in] DWORD dwSelectedItem);
  118. HRESULT CommandLinkClicked([in] DWORD dwFieldID);
  119. HRESULT GetSerialization([out] CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE* pcpgsr,
  120. [out] CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs,
  121. [out] LPWSTR* ppszOptionalStatusText,
  122. [out] CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon);
  123. HRESULT ReportResult([in] NTSTATUS ntsStatus,
  124. [in] NTSTATUS ntsSubstatus,
  125. [out] LPWSTR* ppszOptionalStatusText,
  126. [out] CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon);
  127. }
  128. [
  129. local,
  130. object,
  131. pointer_default(ref),
  132. uuid(9090be5b-502b-41fb-bccc-0049a6c7254b),
  133. ]
  134. interface IQueryContinueWithStatus : IQueryContinue
  135. {
  136. HRESULT SetStatusMessage([in, string] LPCWSTR psz);
  137. }
  138. [
  139. local,
  140. object,
  141. pointer_default(ref),
  142. uuid(9387928b-ac75-4bf9-8ab2-2b93c4a55290),
  143. ]
  144. interface IConnectableCredentialProviderCredential : ICredentialProviderCredential
  145. {
  146. HRESULT Connect([in] IQueryContinueWithStatus* pqcws);
  147. HRESULT Disconnect();
  148. }
  149. [
  150. object,
  151. pointer_default(ref),
  152. uuid(fa6fa76b-66b7-4b11-95f1-86171118e816),
  153. ]
  154. interface ICredentialProviderCredentialEvents : IUnknown
  155. {
  156. HRESULT SetFieldState([in] ICredentialProviderCredential* pcpc,
  157. [in] DWORD dwFieldID,
  158. [in] CREDENTIAL_PROVIDER_FIELD_STATE cpfs);
  159. HRESULT SetFieldInteractiveState([in] ICredentialProviderCredential* pcpc,
  160. [in] DWORD dwFieldID,
  161. [in] CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE cpfis);
  162. HRESULT SetFieldString([in] ICredentialProviderCredential* pcpc,
  163. [in] DWORD dwFieldID,
  164. [in, string, unique] LPCWSTR psz);
  165. HRESULT SetFieldCheckbox([in] ICredentialProviderCredential* pcpc,
  166. [in] DWORD dwFieldID,
  167. [in] WINBOOL bChecked,
  168. [in] LPCWSTR pszLabel);
  169. HRESULT SetFieldBitmap([in] ICredentialProviderCredential* pcpc,
  170. [in] DWORD dwFieldID,
  171. [in] HBITMAP hbmp);
  172. HRESULT SetFieldComboBoxSelectedItem([in] ICredentialProviderCredential* pcpc,
  173. [in] DWORD dwFieldID,
  174. [in] DWORD dwSelectedItem);
  175. HRESULT DeleteFieldComboBoxItem([in] ICredentialProviderCredential* pcpc,
  176. [in] DWORD dwFieldID,
  177. [in] DWORD dwItem);
  178. HRESULT AppendFieldComboBoxItem([in] ICredentialProviderCredential* pcpc,
  179. [in] DWORD dwFieldID,
  180. [in, string] LPCWSTR pszItem);
  181. HRESULT SetFieldSubmitButton([in] ICredentialProviderCredential* pcpc,
  182. [in] DWORD dwFieldID,
  183. [in] DWORD dwAdjacentTo);
  184. HRESULT OnCreatingWindow([out] HWND* phwndOwner);
  185. }
  186. interface ICredentialProviderEvents;
  187. [
  188. local,
  189. object,
  190. pointer_default(ref),
  191. uuid(d27c3481-5a1c-45b2-8aaa-c20ebbe8229e),
  192. ]
  193. interface ICredentialProvider : IUnknown
  194. {
  195. HRESULT SetUsageScenario([in] CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus,
  196. [in] DWORD dwFlags);
  197. HRESULT SetSerialization([in] const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs);
  198. HRESULT Advise([in] ICredentialProviderEvents* pcpe, [in] UINT_PTR upAdviseContext);
  199. HRESULT UnAdvise();
  200. HRESULT GetFieldDescriptorCount([out] DWORD* pdwCount);
  201. HRESULT GetFieldDescriptorAt([in] DWORD dwIndex,
  202. [out] CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR** ppcpfd);
  203. HRESULT GetCredentialCount([out] DWORD* pdwCount,
  204. [out] DWORD* pdwDefault,
  205. [out] WINBOOL* pbAutoLogonWithDefault);
  206. HRESULT GetCredentialAt([in] DWORD dwIndex,
  207. [out] ICredentialProviderCredential** ppcpc);
  208. }
  209. [
  210. object,
  211. pointer_default(ref),
  212. uuid(34201e5a-a787-41a3-a5a4-bd6dcf2a854e),
  213. ]
  214. interface ICredentialProviderEvents : IUnknown
  215. {
  216. HRESULT CredentialsChanged([in] UINT_PTR upAdviseContext);
  217. }
  218. [
  219. local,
  220. object,
  221. pointer_default(ref),
  222. uuid(a5da53f9-d475-4080-a120-910c4a739880),
  223. ]
  224. interface ICredentialProviderFilter : IUnknown
  225. {
  226. HRESULT Filter([in] CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus,
  227. [in] DWORD dwFlags,
  228. [in, size_is(cProviders)] GUID* rgclsidProviders,
  229. [in, out, size_is(cProviders)] WINBOOL* rgbAllow,
  230. [in] DWORD cProviders);
  231. HRESULT UpdateRemoteCredential([in] const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcsIn,
  232. [out] CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcsOut);
  233. }
  234. cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN8)")
  235. [
  236. local,
  237. object,
  238. pointer_default(ref),
  239. uuid(fd672c54-40ea-4d6e-9b49-cfb1a7507bd7),
  240. ]
  241. interface ICredentialProviderCredential2 : ICredentialProviderCredential
  242. {
  243. HRESULT GetUserSid([out, string] LPWSTR *sid);
  244. }
  245. [
  246. local,
  247. object,
  248. pointer_default(ref),
  249. uuid(dbc6fb30-c843-49e3-a645-573e6f39446a),
  250. ]
  251. interface ICredentialProviderCredentialWithFieldOptions : IUnknown
  252. {
  253. HRESULT GetFieldOptions([in] DWORD fieldID,
  254. [out] CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS *options);
  255. }
  256. [
  257. object,
  258. pointer_default(ref),
  259. uuid(b53c00b6-9922-4b78-b1f4-ddfe774dc39b),
  260. ]
  261. interface ICredentialProviderCredentialEvents2 : ICredentialProviderCredentialEvents
  262. {
  263. HRESULT BeginFieldUpdates();
  264. HRESULT EndFieldUpdates();
  265. HRESULT SetFieldOptions([in] ICredentialProviderCredential *credential,
  266. [in] DWORD fieldID,
  267. [in] CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS options);
  268. }
  269. [
  270. local,
  271. uuid(13793285-3ea6-40fd-b420-15f47da41fbb),
  272. object,
  273. pointer_default(ref),
  274. ]
  275. interface ICredentialProviderUser : IUnknown
  276. {
  277. HRESULT GetSid([out, string] LPWSTR *sid);
  278. HRESULT GetProviderID([out] GUID *providerID);
  279. HRESULT GetStringValue([in] REFPROPERTYKEY key, [out, string] LPWSTR *stringValue);
  280. HRESULT GetValue([in] REFPROPERTYKEY key, [out] PROPVARIANT *value);
  281. }
  282. cpp_quote("DEFINE_GUID(Identity_LocalUserProvider, 0xA198529B, 0x730F, 0x4089, 0xB6, 0x46, 0xA1, 0x25, 0x57, 0xF5, 0x66, 0x5E);")
  283. [
  284. local,
  285. uuid(90c119ae-0f18-4520-a1f1-114366a40fe8),
  286. object,
  287. pointer_default(ref),
  288. ]
  289. interface ICredentialProviderUserArray : IUnknown
  290. {
  291. HRESULT SetProviderFilter([in] REFGUID guidProviderToFilterTo);
  292. HRESULT GetAccountOptions([out] CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS *credentialProviderAccountOptions);
  293. HRESULT GetCount([out] DWORD *userCount);
  294. HRESULT GetAt([in] DWORD userIndex, [out] ICredentialProviderUser **user);
  295. }
  296. [
  297. local,
  298. uuid(095c1484-1c0c-4388-9c6d-500e61bf84bd),
  299. object,
  300. pointer_default(ref),
  301. ]
  302. interface ICredentialProviderSetUserArray : IUnknown
  303. {
  304. HRESULT SetUserArray([in] ICredentialProviderUserArray *users);
  305. }
  306. cpp_quote("#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */")
  307. [
  308. uuid(d545db01-e522-4a63-af83-d8ddf954004f),
  309. ]
  310. library CredentialProviders
  311. {
  312. [uuid(60b78e88-ead8-445c-9cfd-0b87f74ea6cd)]
  313. coclass PasswordCredentialProvider { interface ICredentialProvider; }
  314. [uuid(6f45dc1e-5384-457a-bc13-2cd81b0d28ed)]
  315. coclass V1PasswordCredentialProvider { interface ICredentialProvider; }
  316. [uuid(cb82ea12-9f71-446d-89e1-8d0924e1256e)]
  317. coclass PINLogonCredentialProvider { interface ICredentialProvider; }
  318. [uuid(3dd6bec0-8193-4ffe-ae25-e08e39ea4063)]
  319. coclass NPCredentialProvider { interface ICredentialProvider; }
  320. [uuid(8fd7e19c-3bf7-489b-a72c-846ab3678c96)]
  321. coclass SmartcardCredentialProvider { interface ICredentialProvider; }
  322. [uuid(8bf9a910-a8ff-457f-999f-a5ca10b4a885)]
  323. coclass V1SmartcardCredentialProvider { interface ICredentialProvider; }
  324. [uuid(94596c7e-3744-41ce-893e-bbf09122f76a)]
  325. coclass SmartcardPinProvider { interface ICredentialProvider; }
  326. [uuid(1b283861-754f-4022-ad47-a5eaaa618894)]
  327. coclass SmartcardReaderSelectionProvider { interface ICredentialProvider; }
  328. [uuid(1ee7337f-85ac-45e2-a23c-37c753209769)]
  329. coclass SmartcardWinRTProvider { interface ICredentialProvider; }
  330. [uuid(25CBB996-92ED-457e-B28C-4774084BD562)]
  331. coclass GenericCredentialProvider { interface ICredentialProvider; }
  332. [uuid(5537e283-b1e7-4ef8-9c6e-7ab0afe5056d)]
  333. coclass RASProvider { interface ICredentialProvider; }
  334. [uuid(07aa0886-cc8d-4e19-a410-1c75af686e62)]
  335. coclass OnexCredentialProvider { interface ICredentialProvider; }
  336. [uuid(33c86cd6-705f-4ba1-9adb-67070b837775)]
  337. coclass OnexPlapSmartcardCredentialProvider { interface ICredentialProvider; }
  338. [uuid(503739d0-4c5e-4cfd-b3ba-d881334f0df2)]
  339. coclass VaultProvider { interface ICredentialProvider; }
  340. [uuid(bec09223-b018-416d-a0ac-523971b639f5)]
  341. coclass WinBioCredentialProvider { interface ICredentialProvider; }
  342. [uuid(ac3ac249-e820-4343-a65b-377ac634dc09)]
  343. coclass V1WinBioCredentialProvider { interface ICredentialProvider; }
  344. }
  345. cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */")