4 lsa interface definition
7 [ uuid("12345778-1234-abcd-ef00-0123456789ab"),
9 endpoint("ncacn_np:[\\pipe\\lsarpc]","ncacn_np:[\\pipe\\lsass]", "ncacn_ip_tcp:", "ncalrpc:"),
10 pointer_default(unique),
11 pointer_default_top(unique),
12 helpstring("Local Security Authority"),
16 typedef [public] struct {
17 [value(2*strlen_m(string))] uint16 length;
18 [value(2*strlen_m(string))] uint16 size;
19 unistr_noterm *string;
22 typedef [public] struct {
24 [size_is(count)] lsa_String *names;
27 typedef [public] struct {
28 [value(strlen_m(string))] uint16 length;
29 [value(strlen_m(string))] uint16 size;
30 ascstr_noterm *string;
36 [in,out,ref] policy_handle *handle
43 [in,ref] policy_handle *handle
61 [size_is(count)] lsa_PrivEntry *privs;
64 NTSTATUS lsa_EnumPrivs (
65 [in,ref] policy_handle *handle,
66 [in,out,ref] uint32 *resume_handle,
67 [in] uint32 max_count,
68 [out,ref] lsa_PrivArray *privs
74 NTSTATUS lsa_QuerySecurity (
75 [in,ref] policy_handle *handle,
77 [out] sec_desc_buf *sdbuf
83 NTSTATUS lsa_SetSecObj ();
88 NTSTATUS lsa_ChangePassword ();
94 uint32 len; /* ignored */
95 uint16 impersonation_level;
101 uint32 len; /* ignored */
105 security_descriptor *sec_desc;
106 lsa_QosInfo *sec_qos;
107 } lsa_ObjectAttribute;
109 /* notice the screwup with the system_name - thats why MS created
111 NTSTATUS lsa_OpenPolicy (
112 [in] uint16 *system_name,
113 [in,ref] lsa_ObjectAttribute *attr,
114 [in] uint32 access_mask,
115 [out,ref] policy_handle *handle
126 NTTIME retention_time;
127 uint8 shutdown_in_progress;
128 NTTIME time_to_shutdown;
129 uint32 next_audit_record;
134 uint32 auditing_mode;
135 [size_is(count)] uint32 *settings;
137 } lsa_AuditEventsInfo;
149 uint16 unknown; /* an midl padding bug? */
156 } lsa_ReplicaSourceInfo;
160 uint32 non_paged_pool;
165 } lsa_DefaultQuotaInfo;
169 NTTIME db_create_time;
170 } lsa_ModificationInfo;
173 uint8 shutdown_on_full;
174 } lsa_AuditFullSetInfo;
177 uint16 unknown; /* an midl padding bug? */
178 uint8 shutdown_on_full;
180 } lsa_AuditFullQueryInfo;
184 lsa_String dns_domain;
185 lsa_String dns_forest;
191 LSA_POLICY_INFO_AUDIT_LOG=1,
192 LSA_POLICY_INFO_AUDIT_EVENTS=2,
193 LSA_POLICY_INFO_DOMAIN=3,
194 LSA_POLICY_INFO_PD=4,
195 LSA_POLICY_INFO_ACCOUNT_DOMAIN=5,
196 LSA_POLICY_INFO_ROLE=6,
197 LSA_POLICY_INFO_REPLICA=7,
198 LSA_POLICY_INFO_QUOTA=8,
199 LSA_POLICY_INFO_DB=9,
200 LSA_POLICY_INFO_AUDIT_FULL_SET=10,
201 LSA_POLICY_INFO_AUDIT_FULL_QUERY=11,
202 LSA_POLICY_INFO_DNS=12
205 typedef [switch_type(uint16)] union {
206 [case(LSA_POLICY_INFO_AUDIT_LOG)] lsa_AuditLogInfo audit_log;
207 [case(LSA_POLICY_INFO_AUDIT_EVENTS)] lsa_AuditEventsInfo audit_events;
208 [case(LSA_POLICY_INFO_DOMAIN)] lsa_DomainInfo domain;
209 [case(LSA_POLICY_INFO_PD)] lsa_PDAccountInfo pd;
210 [case(LSA_POLICY_INFO_ACCOUNT_DOMAIN)] lsa_DomainInfo account_domain;
211 [case(LSA_POLICY_INFO_ROLE)] lsa_ServerRole role;
212 [case(LSA_POLICY_INFO_REPLICA)] lsa_ReplicaSourceInfo replica;
213 [case(LSA_POLICY_INFO_QUOTA)] lsa_DefaultQuotaInfo quota;
214 [case(LSA_POLICY_INFO_DB)] lsa_ModificationInfo db;
215 [case(LSA_POLICY_INFO_AUDIT_FULL_SET)] lsa_AuditFullSetInfo auditfullset;
216 [case(LSA_POLICY_INFO_AUDIT_FULL_QUERY)] lsa_AuditFullQueryInfo auditfullquery;
217 [case(LSA_POLICY_INFO_DNS)] lsa_DnsDomainInfo dns;
218 } lsa_PolicyInformation;
220 NTSTATUS lsa_QueryInfoPolicy (
221 [in,ref] policy_handle *handle,
223 [out,switch_is(level)] lsa_PolicyInformation *info
228 NTSTATUS lsa_SetInfoPolicy ();
232 NTSTATUS lsa_ClearAuditLog ();
236 NTSTATUS lsa_CreateAccount (
237 [in,ref] policy_handle *handle,
238 [in,ref] dom_sid2 *sid,
239 [in] uint32 access_mask,
240 [out,ref] policy_handle *acct_handle
244 /* NOTE: This only returns accounts that have at least
252 typedef [public] struct {
253 [range(0,1000)] uint32 num_sids;
254 [size_is(num_sids)] lsa_SidPtr *sids;
257 NTSTATUS lsa_EnumAccounts (
258 [in,ref] policy_handle *handle,
259 [in,out,ref] uint32 *resume_handle,
260 [in,range(0,8192)] uint32 num_entries,
261 [out,ref] lsa_SidArray *sids
265 /*************************************************/
271 } lsa_TrustInformation;
273 NTSTATUS lsa_CreateTrustedDomain(
274 [in,ref] policy_handle *handle,
275 [in,ref] lsa_TrustInformation *info,
276 [in] uint32 access_mask,
277 [out,ref] policy_handle *trustdom_handle
284 /* w2k3 treats max_size as max_domains*60 */
285 const int LSA_ENUM_TRUST_DOMAIN_MULTIPLIER = 60;
290 } lsa_DomainInformation;
294 [size_is(count)] lsa_DomainInformation *domains;
297 NTSTATUS lsa_EnumTrustDom (
298 [in,ref] policy_handle *handle,
299 [in,out,ref] uint32 *resume_handle,
300 [in,range(0,1000)] uint32 max_size,
301 [out,ref] lsa_DomainList *domains
308 SID_NAME_USE_NONE = 0,/* NOTUSED */
309 SID_NAME_USER = 1, /* user */
310 SID_NAME_DOM_GRP = 2, /* domain group */
311 SID_NAME_DOMAIN = 3, /* domain: don't know what this is */
312 SID_NAME_ALIAS = 4, /* local group */
313 SID_NAME_WKN_GRP = 5, /* well-known group */
314 SID_NAME_DELETED = 6, /* deleted account: needed for c2 rating */
315 SID_NAME_INVALID = 7, /* invalid account */
316 SID_NAME_UNKNOWN = 8 /* oops. */
320 lsa_SidType sid_type;
326 [range(0,1000)] uint32 count;
327 [size_is(count)] lsa_TranslatedSid *sids;
331 [range(0,1000)] uint32 count;
332 [size_is(count)] lsa_TrustInformation *domains;
336 NTSTATUS lsa_LookupNames (
337 [in,ref] policy_handle *handle,
338 [in,range(0,1000)] uint32 num_names,
339 [in,size_is(num_names)] lsa_String names[],
340 [out] lsa_RefDomainList *domains,
341 [in,out,ref] lsa_TransSidArray *sids,
343 [in,out,ref] uint32 *count
351 lsa_SidType sid_type;
354 } lsa_TranslatedName;
357 [range(0,1000)] uint32 count;
358 [size_is(count)] lsa_TranslatedName *names;
359 } lsa_TransNameArray;
361 NTSTATUS lsa_LookupSids (
362 [in,ref] policy_handle *handle,
363 [in,ref] lsa_SidArray *sids,
364 [out] lsa_RefDomainList *domains,
365 [in,out,ref] lsa_TransNameArray *names,
367 [in,out,ref] uint32 *count
372 NTSTATUS lsa_CreateSecret(
373 [in,ref] policy_handle *handle,
374 [in] lsa_String name,
375 [in] uint32 access_mask,
376 [out,ref] policy_handle *sec_handle
380 /*****************************************/
382 NTSTATUS lsa_OpenAccount (
383 [in,ref] policy_handle *handle,
384 [in,ref] dom_sid2 *sid,
385 [in] uint32 access_mask,
386 [out,ref] policy_handle *acct_handle
390 /****************************************/
399 [range(0,1000)] uint32 count;
401 [size_is(count)] lsa_LUIDAttribute set[*];
404 NTSTATUS lsa_EnumPrivsAccount (
405 [in,ref] policy_handle *handle,
406 [out] lsa_PrivilegeSet *privs
410 /****************************************/
412 NTSTATUS lsa_AddPrivilegesToAccount(
413 [in,ref] policy_handle *handle,
414 [in,ref] lsa_PrivilegeSet *privs
418 /****************************************/
420 NTSTATUS lsa_RemovePrivilegesFromAccount(
421 [in,ref] policy_handle *handle,
422 [in] uint8 remove_all,
423 [in] lsa_PrivilegeSet *privs
427 NTSTATUS lsa_GetQuotasForAccount();
430 NTSTATUS lsa_SetQuotasForAccount();
433 NTSTATUS lsa_GetSystemAccessAccount();
435 NTSTATUS lsa_SetSystemAccessAccount();
438 NTSTATUS lsa_OpenTrustedDomain(
439 [in,ref] policy_handle *handle,
440 [in,ref] dom_sid2 *sid,
441 [in] uint32 access_mask,
442 [out,ref] policy_handle *trustdom_handle
445 typedef [flag(NDR_PAHEX)] struct {
448 [size_is(size),length_is(length)] uint8 *data;
451 typedef [flag(NDR_PAHEX)] struct {
452 [range(0,65536)] uint32 size;
453 [size_is(size)] uint8 *data;
457 LSA_TRUSTED_DOMAIN_INFO_NAME = 1,
458 LSA_TRUSTED_DOMAIN_INFO_CONTROLLERS_INFO = 2,
459 LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET = 3,
460 LSA_TRUSTED_DOMAIN_INFO_PASSWORD = 4,
461 LSA_TRUSTED_DOMAIN_INFO_BASIC = 5,
462 LSA_TRUSTED_DOMAIN_INFO_INFO_EX = 6,
463 LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO = 7,
464 LSA_TRUSTED_DOMAIN_INFO_FULL_INFO = 8,
465 LSA_TRUSTED_DOMAIN_INFO_11 = 11,
466 LSA_TRUSTED_DOMAIN_INFO_INFO_ALL = 12
467 } lsa_TrustDomInfoEnum;
470 lsa_String netbios_name;
471 } lsa_TrustDomainInfoName;
475 } lsa_TrustDomainInfoPosixOffset;
478 lsa_DATA_BUF *password;
479 lsa_DATA_BUF *old_password;
480 } lsa_TrustDomainInfoPassword;
483 lsa_String netbios_name;
485 } lsa_TrustDomainInfoBasic;
488 lsa_String domain_name;
489 lsa_String netbios_name;
491 uint32 trust_direction;
493 uint32 trust_attributes;
494 } lsa_TrustDomainInfoInfoEx;
497 NTTIME_hyper last_update_time;
500 } lsa_TrustDomainInfoBuffer;
503 uint32 incoming_count;
504 lsa_TrustDomainInfoBuffer *incoming_current_auth_info;
505 lsa_TrustDomainInfoBuffer *incoming_previous_auth_info;
506 uint32 outgoing_count;
507 lsa_TrustDomainInfoBuffer *outgoing_current_auth_info;
508 lsa_TrustDomainInfoBuffer *outgoing_previous_auth_info;
509 } lsa_TrustDomainInfoAuthInfo;
512 lsa_TrustDomainInfoInfoEx info_ex;
513 lsa_TrustDomainInfoPosixOffset posix_offset;
514 lsa_TrustDomainInfoAuthInfo auth_info;
515 } lsa_TrustDomainInfoFullInfo;
518 lsa_TrustDomainInfoInfoEx info_ex;
520 } lsa_TrustDomainInfo11;
523 lsa_TrustDomainInfoInfoEx info_ex;
525 lsa_TrustDomainInfoPosixOffset posix_offset;
526 lsa_TrustDomainInfoAuthInfo auth_info;
527 } lsa_TrustDomainInfoInfoAll;
529 typedef [switch_type(lsa_TrustDomInfoEnum)] union {
530 [case(LSA_TRUSTED_DOMAIN_INFO_NAME)] lsa_TrustDomainInfoName name;
531 [case(LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET)] lsa_TrustDomainInfoPosixOffset posix_offset;
532 [case(LSA_TRUSTED_DOMAIN_INFO_PASSWORD)] lsa_TrustDomainInfoPassword password;
533 [case(LSA_TRUSTED_DOMAIN_INFO_BASIC)] lsa_TrustDomainInfoBasic info_basic;
534 [case(LSA_TRUSTED_DOMAIN_INFO_INFO_EX)] lsa_TrustDomainInfoInfoEx info_ex;
535 [case(LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO)] lsa_TrustDomainInfoAuthInfo auth_info;
536 [case(LSA_TRUSTED_DOMAIN_INFO_FULL_INFO)] lsa_TrustDomainInfoFullInfo full_info;
537 [case(LSA_TRUSTED_DOMAIN_INFO_11)] lsa_TrustDomainInfo11 info11;
538 [case(LSA_TRUSTED_DOMAIN_INFO_INFO_ALL)] lsa_TrustDomainInfoInfoAll info_all;
539 } lsa_TrustedDomainInfo;
542 NTSTATUS lsa_QueryTrustedDomainInfo(
543 [in,ref] policy_handle *trustdom_handle,
544 [in] lsa_TrustDomInfoEnum level,
545 [out,switch_is(level)] lsa_TrustedDomainInfo *info
549 NTSTATUS lsa_SetInformationTrustedDomain();
552 NTSTATUS lsa_OpenSecret(
553 [in,ref] policy_handle *handle,
554 [in] lsa_String name,
555 [in] uint32 access_mask,
556 [out,ref] policy_handle *sec_handle
561 NTSTATUS lsa_SetSecret(
562 [in,ref] policy_handle *sec_handle,
563 [in] lsa_DATA_BUF *new_val,
564 [in] lsa_DATA_BUF *old_val
572 NTSTATUS lsa_QuerySecret (
573 [in,ref] policy_handle *sec_handle,
574 [in,out] lsa_DATA_BUF_PTR *new_val,
575 [in,out] NTTIME_hyper *new_mtime,
576 [in,out] lsa_DATA_BUF_PTR *old_val,
577 [in,out] NTTIME_hyper *old_mtime
581 NTSTATUS lsa_LookupPrivValue(
582 [in,ref] policy_handle *handle,
583 [in,ref] lsa_String *name,
584 [out,ref] lsa_LUID *luid
589 NTSTATUS lsa_LookupPrivName (
590 [in,ref] policy_handle *handle,
591 [in,ref] lsa_LUID *luid,
592 [out] lsa_String *name
596 /*******************/
598 NTSTATUS lsa_LookupPrivDisplayName (
599 [in,ref] policy_handle *handle,
600 [in,ref] lsa_String *name,
601 [out] lsa_String *disp_name,
602 /* see http://www.microsoft.com/globaldev/nlsweb/ for
603 language definitions */
604 [in,out,ref] uint16 *language_id,
609 NTSTATUS lsa_DeleteObject();
612 /*******************/
614 NTSTATUS lsa_EnumAccountsWithUserRight (
615 [in,ref] policy_handle *handle,
616 [in] lsa_String *name,
617 [out,ref] lsa_SidArray *sids
623 } lsa_RightAttribute;
627 [size_is(count)] lsa_String *names;
630 NTSTATUS lsa_EnumAccountRights (
631 [in,ref] policy_handle *handle,
632 [in,ref] dom_sid2 *sid,
633 [out,ref] lsa_RightSet *rights
637 /**********************/
639 NTSTATUS lsa_AddAccountRights (
640 [in,ref] policy_handle *handle,
641 [in,ref] dom_sid2 *sid,
642 [in,ref] lsa_RightSet *rights
645 /**********************/
647 NTSTATUS lsa_RemoveAccountRights (
648 [in,ref] policy_handle *handle,
649 [in,ref] dom_sid2 *sid,
651 [in,ref] lsa_RightSet *rights
655 NTSTATUS lsa_QueryTrustedDomainInfoBySid(
656 [in,ref] policy_handle *handle,
657 [in,ref] dom_sid2 *dom_sid,
658 [in] lsa_TrustDomInfoEnum level,
659 [out,switch_is(level)] lsa_TrustedDomainInfo *info
663 NTSTATUS lsa_SetTrustDomainInfo();
665 NTSTATUS lsa_DeleteTrustDomain();
667 NTSTATUS lsa_StorePrivateData();
669 NTSTATUS lsa_RetrievePrivateData();
672 /**********************/
674 NTSTATUS lsa_OpenPolicy2 (
675 [in] unistr *system_name,
676 [in,ref] lsa_ObjectAttribute *attr,
677 [in] uint32 access_mask,
678 [out,ref] policy_handle *handle
681 /**********************/
687 NTSTATUS lsa_GetUserName(
688 [in] unistr *system_name,
689 [in,out] lsa_String *account_name,
690 [in,out] lsa_StringPointer *authority_name
693 /**********************/
696 NTSTATUS lsa_QueryInfoPolicy2(
697 [in,ref] policy_handle *handle,
699 [out,switch_is(level)] lsa_PolicyInformation *info
703 NTSTATUS lsa_SetInfoPolicy2();
705 /**********************/
707 NTSTATUS lsa_QueryTrustedDomainInfoByName(
708 [in,ref] policy_handle *handle,
709 [in] lsa_String trusted_domain,
710 [in] lsa_TrustDomInfoEnum level,
711 [out,switch_is(level)] lsa_TrustedDomainInfo *info
715 NTSTATUS lsa_SetTrustedDomainInfoByName();
718 NTSTATUS lsa_EnumTrustedDomainsEx();
721 NTSTATUS lsa_CreateTrustedDomainEx();
724 NTSTATUS lsa_CloseTrustedDomainEx();
727 NTSTATUS lsa_QueryDomainInformationPolicy();
730 NTSTATUS lsa_SetDomInfoPolicy();
732 /**********************/
734 NTSTATUS lsa_OpenTrustedDomainByName(
735 [in,ref] policy_handle *handle,
736 [in] lsa_String name,
737 [in] uint32 access_mask,
738 [out,ref] policy_handle *trustdom_handle
742 NTSTATUS lsa_TestCall();
744 /**********************/
748 lsa_SidType sid_type;
752 } lsa_TranslatedName2;
755 [range(0,1000)] uint32 count;
756 [size_is(count)] lsa_TranslatedName2 *names;
757 } lsa_TransNameArray2;
759 NTSTATUS lsa_LookupSids2(
760 [in,ref] policy_handle *handle,
761 [in,ref] lsa_SidArray *sids,
762 [out] lsa_RefDomainList *domains,
763 [in,out,ref] lsa_TransNameArray2 *names,
765 [in,out,ref] uint32 *count,
766 [in] uint32 unknown1,
770 /**********************/
774 lsa_SidType sid_type;
778 } lsa_TranslatedSid2;
781 [range(0,1000)] uint32 count;
782 [size_is(count)] lsa_TranslatedSid2 *sids;
783 } lsa_TransSidArray2;
785 NTSTATUS lsa_LookupNames2 (
786 [in,ref] policy_handle *handle,
787 [in,range(0,1000)] uint32 num_names,
788 [in,size_is(num_names)] lsa_String names[],
789 [out] lsa_RefDomainList *domains,
790 [in,out,ref] lsa_TransSidArray2 *sids,
792 [in,out,ref] uint32 *count,
793 [in] uint32 unknown1,
798 NTSTATUS lsa_CreateTrustedDomainEx2();
801 NTSTATUS lsa_CREDRWRITE();
804 NTSTATUS lsa_CREDRREAD();
807 NTSTATUS lsa_CREDRENUMERATE();
810 NTSTATUS lsa_CREDRWRITEDOMAINCREDENTIALS();
813 NTSTATUS lsa_CREDRREADDOMAINCREDENTIALS();
816 NTSTATUS lsa_CREDRDELETE();
819 NTSTATUS lsa_CREDRGETTARGETINFO();
822 NTSTATUS lsa_CREDRPROFILELOADED();
824 /**********************/
827 lsa_SidType sid_type;
831 } lsa_TranslatedSid3;
834 [range(0,1000)] uint32 count;
835 [size_is(count)] lsa_TranslatedSid3 *sids;
836 } lsa_TransSidArray3;
838 NTSTATUS lsa_LookupNames3 (
839 [in,ref] policy_handle *handle,
840 [in,range(0,1000)] uint32 num_names,
841 [in,size_is(num_names)] lsa_String names[],
842 [out] lsa_RefDomainList *domains,
843 [in,out,ref] lsa_TransSidArray3 *sids,
845 [in,out,ref] uint32 *count,
846 [in] uint32 unknown1,
851 NTSTATUS lsa_CREDRGETSESSIONTYPES();
854 NTSTATUS lsa_LSARREGISTERAUDITEVENT();
857 NTSTATUS lsa_LSARGENAUDITEVENT();
860 NTSTATUS lsa_LSARUNREGISTERAUDITEVENT();
863 NTSTATUS lsa_LSARQUERYFORESTTRUSTINFORMATION();
866 NTSTATUS lsa_LSARSETFORESTTRUSTINFORMATION();
869 NTSTATUS lsa_CREDRRENAME();
874 NTSTATUS lsa_LookupSids3(
875 [in,ref] lsa_SidArray *sids,
876 [out] lsa_RefDomainList *domains,
877 [in,out,ref] lsa_TransNameArray2 *names,
879 [in,out,ref] uint32 *count,
880 [in] uint32 unknown1,
885 NTSTATUS lsa_LSARLOOKUPNAMES4();
888 NTSTATUS lsa_LSAROPENPOLICYSCE();
891 NTSTATUS lsa_LSARADTREGISTERSECURITYEVENTSOURCE();
894 NTSTATUS lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE();
897 NTSTATUS lsa_LSARADTREPORTSECURITYEVENT();