8b20b6db903071f1d4b56d93fcbb670b0f9b91e3
[samba.git] / source4 / librpc / idl / lsa.idl
1 #include "idl_types.h"
2
3 /*
4   lsa interface definition
5 */
6
7 [ uuid("12345778-1234-abcd-ef00-0123456789ab"),
8   version(0.0),
9   endpoint("ncacn_np:[\\pipe\\lsarpc]","ncacn_np:[\\pipe\\lsass]", "ncacn_ip_tcp:", "ncalrpc:"),
10   pointer_default(unique),
11   helpstring("Local Security Authority"),
12   depends(security)
13 ] interface lsarpc
14 {
15         /******************/
16         /* Function: 0x00 */
17         NTSTATUS lsa_Close (
18                 [in,out,ref]     policy_handle *handle
19                 );
20         
21
22         /******************/
23         /* Function: 0x01 */
24         NTSTATUS lsa_Delete (
25                 [in,ref]     policy_handle *handle
26                 );
27
28
29         /******************/
30         /* Function: 0x02 */
31
32         typedef struct {
33                 [value(2*strlen_m(r->string))] uint16 length;
34                 [value(r->length)] uint16 size;
35                 unistr_noterm *string;
36         } lsa_String;
37
38         typedef struct {
39                 uint32 low;
40                 uint32 high;
41         } lsa_LUID;
42         
43         typedef struct {
44                 lsa_String name;
45                 lsa_LUID luid;
46         } lsa_PrivEntry;
47
48         typedef struct {
49                 uint32 count;
50                 [size_is(count)] lsa_PrivEntry *privs[];
51         } lsa_PrivArray;
52
53         NTSTATUS lsa_EnumPrivs (
54                 [in,ref]     policy_handle *handle,
55                 [in,out,ref] uint32 *resume_handle,
56                 [in]         uint32 max_count,
57                 [out,ref]    lsa_PrivArray *privs
58                 );
59
60         /******************/
61         /* Function: 0x03 */
62
63         NTSTATUS lsa_QuerySecurity (
64                 [in,ref]     policy_handle *handle,
65                 [in]         uint32 sec_info,
66                 [out]        sec_desc_buf *sdbuf
67                 );
68
69
70         /******************/
71         /* Function: 0x04 */
72         NTSTATUS lsa_SetSecObj ();
73
74
75         /******************/
76         /* Function: 0x05 */
77         NTSTATUS lsa_ChangePassword ();
78
79
80         /******************/
81         /* Function: 0x06 */
82         typedef struct {
83                 uint32  len; /* ignored */
84                 uint16  impersonation_level;
85                 uint8   context_mode;
86                 uint8   effective_only;
87         } lsa_QosInfo;
88         
89         typedef struct {
90                 uint32 len; /* ignored */
91                 uint8 *root_dir;
92                 unistr *object_name;
93                 uint32 attributes;
94                 security_descriptor *sec_desc;
95                 lsa_QosInfo *sec_qos;
96         } lsa_ObjectAttribute;
97
98         /* notice the screwup with the system_name - thats why MS created
99            OpenPolicy2 */
100         NTSTATUS lsa_OpenPolicy (
101                 [in]       uint16 *system_name,
102                 [in,ref]   lsa_ObjectAttribute *attr,
103                 [in]       uint32 access_mask,
104                 [out,ref]  policy_handle *handle
105                 );
106         
107
108
109         /******************/
110         /* Function: 0x07 */
111
112         typedef struct {
113                 uint32 percent_full;
114                 uint32 log_size;
115                 NTTIME retention_time;
116                 uint8  shutdown_in_progress;
117                 NTTIME time_to_shutdown;
118                 uint32 next_audit_record;
119                 uint32 unknown;
120         } lsa_AuditLogInfo;
121
122         typedef struct {
123                 uint32 auditing_mode;
124                 [size_is(count)] uint32 *settings[];
125                 uint32 count;
126         } lsa_AuditEventsInfo;
127
128         typedef struct {
129                 lsa_String name;
130                 dom_sid2 *sid;
131         } lsa_DomainInfo;
132
133         typedef struct {
134                 lsa_String name;
135         } lsa_PDAccountInfo;
136
137         typedef struct {
138                 uint16 unknown; /* an midl padding bug? */
139                 uint16 role;
140         } lsa_ServerRole;
141
142         typedef struct {
143                 lsa_String source;
144                 lsa_String account;
145         } lsa_ReplicaSourceInfo;
146
147         typedef struct {
148                 uint32 paged_pool;
149                 uint32 non_paged_pool;
150                 uint32 min_wss;
151                 uint32 max_wss;
152                 uint32 pagefile;
153                 hyper unknown;
154         } lsa_DefaultQuotaInfo;
155
156         typedef struct {
157                 hyper modified_id;
158                 NTTIME db_create_time;
159         } lsa_ModificationInfo;
160
161         typedef struct {
162                 uint8 shutdown_on_full;
163         } lsa_AuditFullSetInfo;
164
165         typedef struct {
166                 uint16 unknown; /* an midl padding bug? */
167                 uint8 shutdown_on_full;
168                 uint8 log_is_full;
169         } lsa_AuditFullQueryInfo;
170
171         typedef struct {
172                 lsa_String name;
173                 lsa_String dns_domain;
174                 lsa_String dns_forest;
175                 GUID domain_guid;
176                 dom_sid2 *sid;
177         } lsa_DnsDomainInfo;
178
179         typedef enum {
180                 LSA_POLICY_INFO_AUDIT_LOG=1,
181                 LSA_POLICY_INFO_AUDIT_EVENTS=2,
182                 LSA_POLICY_INFO_DOMAIN=3,
183                 LSA_POLICY_INFO_PD=4,
184                 LSA_POLICY_INFO_ACCOUNT_DOMAIN=5,
185                 LSA_POLICY_INFO_ROLE=6,
186                 LSA_POLICY_INFO_REPLICA=7,
187                 LSA_POLICY_INFO_QUOTA=8,
188                 LSA_POLICY_INFO_DB=9,
189                 LSA_POLICY_INFO_AUDIT_FULL_SET=10,
190                 LSA_POLICY_INFO_AUDIT_FULL_QUERY=11,
191                 LSA_POLICY_INFO_DNS=12
192         } lsaPolicyInfo;
193
194         typedef union {
195                 [case(LSA_POLICY_INFO_AUDIT_LOG)]        lsa_AuditLogInfo       audit_log;
196                 [case(LSA_POLICY_INFO_AUDIT_EVENTS)]     lsa_AuditEventsInfo    audit_events;
197                 [case(LSA_POLICY_INFO_DOMAIN)]           lsa_DomainInfo         domain;
198                 [case(LSA_POLICY_INFO_PD)]               lsa_PDAccountInfo      pd;
199                 [case(LSA_POLICY_INFO_ACCOUNT_DOMAIN)]   lsa_DomainInfo         account_domain;
200                 [case(LSA_POLICY_INFO_ROLE)]             lsa_ServerRole         role;
201                 [case(LSA_POLICY_INFO_REPLICA)]          lsa_ReplicaSourceInfo  replica;
202                 [case(LSA_POLICY_INFO_QUOTA)]            lsa_DefaultQuotaInfo   quota;
203                 [case(LSA_POLICY_INFO_DB)]               lsa_ModificationInfo   db;
204                 [case(LSA_POLICY_INFO_AUDIT_FULL_SET)]   lsa_AuditFullSetInfo   auditfullset;
205                 [case(LSA_POLICY_INFO_AUDIT_FULL_QUERY)] lsa_AuditFullQueryInfo auditfullquery;
206                 [case(LSA_POLICY_INFO_DNS)]              lsa_DnsDomainInfo      dns;
207         } lsa_PolicyInformation;
208
209         NTSTATUS lsa_QueryInfoPolicy (
210                 [in,ref]                 policy_handle *handle,
211                 [in]                     uint16 level,
212                 [out,switch_is(level)]   lsa_PolicyInformation *info
213                 );
214
215         /******************/
216         /* Function:       0x08 */
217         NTSTATUS lsa_SetInfoPolicy ();
218
219         /******************/
220         /* Function:       0x09 */
221         NTSTATUS lsa_ClearAuditLog ();
222
223         /******************/
224         /* Function: 0x0a */
225         NTSTATUS lsa_CreateAccount (
226                 [in,ref]    policy_handle *handle,
227                 [in,ref]    dom_sid2 *sid,
228                 [in]        uint32 access_mask,
229                 [out,ref]   policy_handle *acct_handle
230                 );
231
232         /******************/
233         /* NOTE: This only returns accounts that have at least
234            one privilege set 
235         */
236         /* Function: 0x0b */
237         typedef struct {
238                 dom_sid2 *sid;
239         } lsa_SidPtr;
240         
241         typedef [public] struct {
242                 [range(0,1000)] uint32 num_sids;
243                 [size_is(num_sids)] lsa_SidPtr *sids[];
244         } lsa_SidArray;
245
246         NTSTATUS lsa_EnumAccounts (
247                 [in,ref]     policy_handle *handle,
248                 [in,out,ref] uint32 *resume_handle,
249                 [in,range(0,8192)] uint32 num_entries,
250                 [out,ref]    lsa_SidArray *sids
251                 );
252
253
254         /*************************************************/
255         /* Function: 0x0c                                */
256
257         typedef struct {
258                 lsa_String name;
259                 dom_sid2  *sid;
260         } lsa_TrustInformation;
261
262         NTSTATUS lsa_CreateTrustedDomain(
263                 [in,ref]     policy_handle *handle,
264                 [in,ref]     lsa_TrustInformation *info,
265                 [in]         uint32 access_mask,
266                 [out,ref]    policy_handle *trustdom_handle
267                 );
268
269
270         /******************/
271         /* Function: 0x0d */
272
273         /* w2k3 treats max_size as max_domains*60       */
274         const int LSA_ENUM_TRUST_DOMAIN_MULTIPLIER = 60;
275
276         typedef struct {
277                 lsa_String name;
278                 dom_sid2 *sid;
279         } lsa_DomainInformation;
280
281         typedef struct {
282                 uint32 count;
283                 [size_is(count)] lsa_DomainInformation *domains[];
284         } lsa_DomainList;
285
286         NTSTATUS lsa_EnumTrustDom (
287                 [in,ref]     policy_handle *handle,
288                 [in,out,ref] uint32 *resume_handle,
289                 [in,range(0,1000)] uint32 max_size,
290                 [out,ref]    lsa_DomainList *domains
291                 );
292
293
294         /******************/
295         /* Function: 0x0e */
296         typedef enum {
297                 SID_NAME_USE_NONE = 0,/* NOTUSED */
298                 SID_NAME_USER     = 1, /* user */
299                 SID_NAME_DOM_GRP  = 2, /* domain group */
300                 SID_NAME_DOMAIN   = 3, /* domain: don't know what this is */
301                 SID_NAME_ALIAS    = 4, /* local group */
302                 SID_NAME_WKN_GRP  = 5, /* well-known group */
303                 SID_NAME_DELETED  = 6, /* deleted account: needed for c2 rating */
304                 SID_NAME_INVALID  = 7, /* invalid account */
305                 SID_NAME_UNKNOWN  = 8  /* oops. */
306         } lsa_SidType;
307
308         typedef struct {
309                 lsa_SidType sid_type;
310                 uint32 rid;
311                 uint32 sid_index;
312         } lsa_TranslatedSid;
313
314         typedef struct {
315                 [range(0,1000)] uint32 count;
316                 [size_is(count)] lsa_TranslatedSid *sids[];
317         } lsa_TransSidArray;
318
319         typedef struct {
320                 [range(0,1000)] uint32 count;
321                 [size_is(count)] lsa_TrustInformation *domains[];
322                 uint32 max_count;
323         } lsa_RefDomainList;
324
325         NTSTATUS lsa_LookupNames (
326                 [in,ref]     policy_handle *handle,
327                 [in,range(0,1000)] uint32 num_names,
328                 [in,size_is(num_names)]  lsa_String names[],
329                 [out]        lsa_RefDomainList *domains,
330                 [in,out,ref] lsa_TransSidArray *sids,
331                 [in]         uint16 level,
332                 [in,out,ref] uint32 *count
333                 );
334
335
336         /******************/
337         /* Function: 0x0f */
338
339         typedef struct {
340                 lsa_SidType sid_type;
341                 lsa_String name;
342                 uint32 sid_index;
343         } lsa_TranslatedName;
344
345         typedef struct {
346                 [range(0,1000)] uint32 count;
347                 [size_is(count)] lsa_TranslatedName *names[];
348         } lsa_TransNameArray;
349
350         NTSTATUS lsa_LookupSids (
351                 [in,ref]     policy_handle *handle,
352                 [in,ref]     lsa_SidArray *sids,
353                 [out]        lsa_RefDomainList *domains,
354                 [in,out,ref] lsa_TransNameArray *names,
355                 [in]         uint16 level,
356                 [in,out,ref] uint32 *count
357                 );
358
359
360         /* Function:        0x10 */
361         NTSTATUS lsa_CreateSecret(
362                 [in,ref]     policy_handle *handle,
363                 [in]         lsa_String       name,
364                 [in]         uint32         access_mask,
365                 [out,ref]    policy_handle *sec_handle
366                 );
367
368
369         /*****************************************/
370         /* Function:     0x11                    */
371         NTSTATUS lsa_OpenAccount (
372                 [in,ref]     policy_handle *handle,
373                 [in,ref]     dom_sid2 *sid,
374                 [in]         uint32 access_mask,
375                 [out,ref]    policy_handle *acct_handle
376                 );
377
378
379         /****************************************/
380         /* Function:    0x12                    */
381
382         typedef struct {
383                 lsa_LUID luid;
384                 uint32 attribute;
385         } lsa_LUIDAttribute;
386         
387         typedef struct {
388                 [range(0,1000)] uint32 count;
389                 uint32 unknown;
390                 [size_is(count)] lsa_LUIDAttribute set[*];
391         } lsa_PrivilegeSet;
392         
393         NTSTATUS lsa_EnumPrivsAccount (
394                 [in,ref]     policy_handle *handle,
395                 [out]        lsa_PrivilegeSet *privs
396                 );
397
398
399         /****************************************/
400         /* Function:            0x13 */
401         NTSTATUS lsa_AddPrivilegesToAccount(
402                 [in,ref]     policy_handle *handle,
403                 [in,ref]     lsa_PrivilegeSet *privs
404                 );
405         
406
407         /****************************************/
408         /* Function:         0x14 */
409         NTSTATUS lsa_RemovePrivilegesFromAccount(
410                 [in,ref]     policy_handle *handle,
411                 [in]         uint8 remove_all,
412                 [in]         lsa_PrivilegeSet *privs
413                 );
414
415         /* Function:           0x15 */
416         NTSTATUS lsa_GetQuotasForAccount();
417         
418         /* Function:           0x16 */
419         NTSTATUS lsa_SetQuotasForAccount();
420         
421         /* Function:    0x17 */
422         NTSTATUS lsa_GetSystemAccessAccount();
423         /* Function:    0x18 */
424         NTSTATUS lsa_SetSystemAccessAccount();
425
426         /* Function:        0x19 */
427         NTSTATUS lsa_OpenTrustedDomain(
428                 [in,ref]     policy_handle *handle,
429                 [in,ref]     dom_sid2      *sid,
430                 [in]         uint32         access_mask,
431                 [out,ref]    policy_handle *trustdom_handle
432                 );
433
434         typedef [flag(NDR_PAHEX)] struct {
435                 uint32 length;
436                 uint32 size;
437                 [size_is(size),length_is(length)] uint8 *data[];
438         } lsa_DATA_BUF;
439
440         typedef [flag(NDR_PAHEX)] struct {
441                 [range(0,65536)] uint32 size;
442                 [size_is(size)] uint8 *data[];
443         } lsa_DATA_BUF2;
444
445         typedef enum {
446                 LSA_TRUSTED_DOMAIN_INFO_NAME         = 1,
447                 LSA_TRUSTED_DOMAIN_INFO_2            = 2,
448                 LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET = 3,
449                 LSA_TRUSTED_DOMAIN_INFO_PASSWORD     = 4,
450                 LSA_TRUSTED_DOMAIN_INFO_5            = 5,
451                 LSA_TRUSTED_DOMAIN_INFO_INFO_EX      = 6,
452                 LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO    = 7,
453                 LSA_TRUSTED_DOMAIN_INFO_FULL_INFO    = 8,
454                 LSA_TRUSTED_DOMAIN_INFO_11           = 11,
455                 LSA_TRUSTED_DOMAIN_INFO_INFO_ALL     = 12
456         } lsa_TrustDomInfoEnum;
457
458         typedef struct {
459                 lsa_String     netbios_name;
460         } lsa_TrustDomainInfoName;
461
462         typedef struct {
463                 uint32         posix_offset;
464         } lsa_TrustDomainInfoPosixOffset;
465
466         typedef struct {
467                 lsa_DATA_BUF  *password;
468                 lsa_DATA_BUF  *old_password;
469         } lsa_TrustDomainInfoPassword;
470
471         typedef struct {
472                 lsa_String     netbios_name;
473                 dom_sid2      *sid;
474         } lsa_TrustDomainInfo5;
475
476         typedef struct {
477                 lsa_String     domain_name;
478                 lsa_String     netbios_name;
479                 dom_sid2      *sid;
480                 uint32         trust_direction;
481                 uint32         trust_type;
482                 uint32         trust_attributes;
483         } lsa_TrustDomainInfoInfoEx;
484
485         typedef struct {
486                 NTTIME_hyper   last_update_time;
487                 uint32         secret_type;
488                 lsa_DATA_BUF2  data;
489         } lsa_TrustDomainInfoBuffer;
490
491         typedef struct {
492                 uint32 incoming_count;
493                 lsa_TrustDomainInfoBuffer *incoming_current_auth_info;
494                 lsa_TrustDomainInfoBuffer *incoming_previous_auth_info;
495                 uint32 outgoing_count;
496                 lsa_TrustDomainInfoBuffer *outgoing_current_auth_info;
497                 lsa_TrustDomainInfoBuffer *outgoing_previous_auth_info;
498         } lsa_TrustDomainInfoAuthInfo;
499
500         typedef struct {
501                 lsa_TrustDomainInfoInfoEx      info_ex;
502                 lsa_TrustDomainInfoPosixOffset posix_offset;
503                 lsa_TrustDomainInfoAuthInfo    auth_info;
504         } lsa_TrustDomainInfoFullInfo;
505
506         typedef struct {
507                 lsa_TrustDomainInfoInfoEx      info_ex;
508                 lsa_DATA_BUF2                  data1;
509         } lsa_TrustDomainInfo11;
510
511         typedef struct {
512                 lsa_TrustDomainInfoInfoEx      info_ex;
513                 lsa_DATA_BUF2                  data1;
514                 lsa_TrustDomainInfoPosixOffset posix_offset;
515                 lsa_TrustDomainInfoAuthInfo    auth_info;
516         } lsa_TrustDomainInfoInfoAll;
517
518         typedef union {
519                 [case(LSA_TRUSTED_DOMAIN_INFO_NAME)]         lsa_TrustDomainInfoName        name;
520                 [case(LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET)] lsa_TrustDomainInfoPosixOffset posix_offset;
521                 [case(LSA_TRUSTED_DOMAIN_INFO_PASSWORD)]     lsa_TrustDomainInfoPassword    password;
522                 [case(LSA_TRUSTED_DOMAIN_INFO_5)]            lsa_TrustDomainInfo5           info5;
523                 [case(LSA_TRUSTED_DOMAIN_INFO_INFO_EX)]      lsa_TrustDomainInfoInfoEx      info_ex;
524                 [case(LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO)]    lsa_TrustDomainInfoAuthInfo    auth_info;
525                 [case(LSA_TRUSTED_DOMAIN_INFO_FULL_INFO)]    lsa_TrustDomainInfoFullInfo    full_info;
526                 [case(LSA_TRUSTED_DOMAIN_INFO_11)]           lsa_TrustDomainInfo11          info11;
527                 [case(LSA_TRUSTED_DOMAIN_INFO_INFO_ALL)]     lsa_TrustDomainInfoInfoAll     info_all;
528         } lsa_TrustedDomainInfo;
529
530         /* Function:       0x1a */
531         NTSTATUS lsa_QueryTrustedDomainInfo(
532                 [in,ref]     policy_handle                   *trustdom_handle,
533                 [in]         lsa_TrustDomInfoEnum             level, 
534                 [out,switch_is(level)] lsa_TrustedDomainInfo *info
535                 );
536
537         /* Function:     0x1b */
538         NTSTATUS lsa_SetInformationTrustedDomain();
539
540         /* Function:          0x1c */
541         NTSTATUS lsa_OpenSecret(
542                 [in,ref]     policy_handle    *handle,
543                 [in]         lsa_String        name,
544                 [in]         uint32            access_mask,
545                 [out,ref]    policy_handle    *sec_handle
546                 );
547
548         /* Function:           0x1d */
549
550         NTSTATUS lsa_SetSecret(
551                 [in,ref]     policy_handle    *sec_handle,
552                 [in]         lsa_DATA_BUF     *new_val,
553                 [in]         lsa_DATA_BUF     *old_val
554                 );
555
556         typedef struct {
557                 lsa_DATA_BUF *buf;
558         } lsa_DATA_BUF_PTR;
559
560         /* Function:         0x1e */
561         NTSTATUS lsa_QuerySecret (
562                 [in,ref]     policy_handle     *sec_handle,
563                 [in,out]     lsa_DATA_BUF_PTR  *new_val,
564                 [in,out]     NTTIME_hyper      *new_mtime,
565                 [in,out]     lsa_DATA_BUF_PTR  *old_val,
566                 [in,out]     NTTIME_hyper      *old_mtime
567                 );
568
569         /* Function:     0x1f */
570         NTSTATUS lsa_LookupPrivValue(
571                 [in,ref]     policy_handle *handle,
572                 [in,ref]     lsa_String *name,
573                 [out,ref]    lsa_LUID *luid
574                 );
575
576
577         /* Function:      0x20 */
578         NTSTATUS lsa_LookupPrivName (
579                 [in,ref]     policy_handle *handle,
580                 [in,ref]     lsa_LUID *luid,
581                 [out]        lsa_String *name
582                 );
583
584
585         /*******************/
586         /* Function:  0x21 */
587         NTSTATUS lsa_LookupPrivDisplayName (
588                 [in,ref]     policy_handle *handle,
589                 [in,ref]     lsa_String *name,
590                 [out]        lsa_String *disp_name,
591                 /* see http://www.microsoft.com/globaldev/nlsweb/ for
592                    language definitions */
593                 [in,out,ref] uint16 *language_id,
594                 [in]         uint16 unknown
595                 );
596
597         /* Function:        0x22 */
598         NTSTATUS lsa_DeleteObject();
599
600         
601         /*******************/
602         /* Function:      0x23 */
603         NTSTATUS lsa_EnumAccountsWithUserRight (
604                 [in,ref]     policy_handle *handle,
605                 [in]         lsa_String *name,
606                 [out,ref]    lsa_SidArray *sids
607                 );
608
609         /* Function:      0x24 */
610         typedef struct {
611                 unistr *name;
612         } lsa_RightAttribute;
613         
614         typedef struct {
615                 uint32 count;
616                 [size_is(count)] lsa_String *names[];
617         } lsa_RightSet;
618         
619         NTSTATUS lsa_EnumAccountRights (
620                 [in,ref]     policy_handle *handle,
621                 [in,ref]     dom_sid2 *sid,
622                 [out,ref]    lsa_RightSet *rights
623                 );
624
625
626         /**********************/
627         /* Function:       0x25 */
628         NTSTATUS lsa_AddAccountRights (
629                 [in,ref]     policy_handle *handle,
630                 [in,ref]     dom_sid2 *sid,
631                 [in,ref]     lsa_RightSet *rights
632                 );
633         
634         /**********************/
635         /* Function:       0x26 */
636         NTSTATUS lsa_RemoveAccountRights (
637                 [in,ref]     policy_handle *handle,
638                 [in,ref]     dom_sid2 *sid,
639                 [in]         uint32 unknown,
640                 [in,ref]     lsa_RightSet *rights
641                 );
642
643         /* Function:   0x27 */
644         NTSTATUS lsa_QueryTrustedDomainInfoBySid(
645                 [in,ref]               policy_handle         *handle,
646                 [in,ref]               dom_sid2              *dom_sid,
647                 [in]                   lsa_TrustDomInfoEnum  level, 
648                 [out,switch_is(level)] lsa_TrustedDomainInfo *info
649         );
650
651         /* Function:     0x28 */
652         NTSTATUS lsa_SetTrustDomainInfo();
653         /* Function:      0x29 */
654         NTSTATUS lsa_DeleteTrustDomain();
655         /* Function:       0x2a */
656         NTSTATUS lsa_StorePrivateData();
657         /* Function:        0x2b */
658         NTSTATUS lsa_RetrievePrivateData();
659
660
661         /**********************/
662         /* Function:     0x2c */
663         NTSTATUS lsa_OpenPolicy2 (
664                 [in]      unistr *system_name,
665                 [in,ref]  lsa_ObjectAttribute *attr,
666                 [in]      uint32 access_mask,
667                 [out,ref] policy_handle *handle
668                 );
669
670         /**********************/
671         /* Function:     0x2d */
672         typedef struct {
673                 lsa_String *string;
674         } lsa_StringPointer;
675
676         NTSTATUS lsa_GetUserName(
677                 [in] unistr *system_name,
678                 [in,out] lsa_String *account_name,
679                 [in,out] lsa_StringPointer *authority_name
680                 );
681
682         /**********************/
683         /* Function:          0x2e */
684
685         NTSTATUS lsa_QueryInfoPolicy2(
686                 [in,ref]                 policy_handle *handle,
687                 [in]                     uint16 level,
688                 [out,switch_is(level)]   lsa_PolicyInformation *info
689                 );
690
691         /* Function 0x2f */
692         NTSTATUS lsa_SetInfoPolicy2();
693
694         /**********************/
695         /* Function 0x30 */
696         NTSTATUS lsa_QueryTrustedDomainInfoByName(
697                 [in,ref]               policy_handle         *handle,
698                 [in]                   lsa_String             trusted_domain,
699                 [in]                   lsa_TrustDomInfoEnum   level, 
700                 [out,switch_is(level)] lsa_TrustedDomainInfo *info
701                 );
702
703         /* Function 0x31 */
704         NTSTATUS lsa_SetTrustedDomainInfoByName();
705
706         /* Function 0x32 */
707         NTSTATUS lsa_EnumTrustedDomainsEx();
708
709         /* Function 0x33 */
710         NTSTATUS lsa_CreateTrustedDomainEx();
711
712         /* Function 0x34 */
713         NTSTATUS lsa_CloseTrustedDomainEx();
714
715         /* Function 0x35 */
716         NTSTATUS lsa_QueryDomainInformationPolicy();
717
718         /* Function 0x36 */
719         NTSTATUS lsa_SetDomInfoPolicy();
720
721         /**********************/
722         /* Function 0x37 */
723         NTSTATUS lsa_OpenTrustedDomainByName(
724                 [in,ref]     policy_handle *handle,
725                 [in]         lsa_String     name,
726                 [in]         uint32         access_mask,
727                 [out,ref]    policy_handle *trustdom_handle
728                 );
729
730         /* Function 0x38 */
731         NTSTATUS lsa_TestCall();
732
733         /**********************/
734         /* Function 0x39 */
735
736         typedef struct {
737                 lsa_SidType sid_type;
738                 lsa_String name;
739                 uint32 sid_index;
740                 uint32 unknown;
741         } lsa_TranslatedName2;
742
743         typedef struct {
744                 [range(0,1000)] uint32 count;
745                 [size_is(count)] lsa_TranslatedName2 *names[];
746         } lsa_TransNameArray2;
747
748         NTSTATUS lsa_LookupSids2(
749                 [in,ref]     policy_handle *handle,
750                 [in,ref]     lsa_SidArray *sids,
751                 [out]        lsa_RefDomainList *domains,
752                 [in,out,ref] lsa_TransNameArray2 *names,
753                 [in]         uint16 level,
754                 [in,out,ref] uint32 *count,
755                 [in]         uint32 unknown1,
756                 [in]         uint32 unknown2
757                 );
758
759         /**********************/
760         /* Function 0x3a */
761
762         typedef struct {
763                 lsa_SidType sid_type;
764                 uint32 rid;
765                 uint32 sid_index;
766                 uint32 unknown;
767         } lsa_TranslatedSid2;
768
769         typedef struct {
770                 [range(0,1000)] uint32 count;
771                 [size_is(count)] lsa_TranslatedSid2 *sids[];
772         } lsa_TransSidArray2;
773
774         NTSTATUS lsa_LookupNames2 (
775                 [in,ref]     policy_handle *handle,
776                 [in,range(0,1000)] uint32 num_names,
777                 [in,size_is(num_names)]  lsa_String names[],
778                 [out]        lsa_RefDomainList *domains,
779                 [in,out,ref] lsa_TransSidArray2 *sids,
780                 [in]         uint16 level,
781                 [in,out,ref] uint32 *count,
782                 [in]         uint32 unknown1,
783                 [in]         uint32 unknown2
784                 );
785
786         /* Function 0x3b */
787         NTSTATUS lsa_CreateTrustedDomainEx2();
788
789         /* Function 0x3c */
790         NTSTATUS lsa_CREDRWRITE();
791
792         /* Function 0x3d */
793         NTSTATUS lsa_CREDRREAD();
794
795         /* Function 0x3e */
796         NTSTATUS lsa_CREDRENUMERATE();
797
798         /* Function 0x3f */
799         NTSTATUS lsa_CREDRWRITEDOMAINCREDENTIALS();
800
801         /* Function 0x40 */
802         NTSTATUS lsa_CREDRREADDOMAINCREDENTIALS();
803
804         /* Function 0x41 */
805         NTSTATUS lsa_CREDRDELETE();
806
807         /* Function 0x42 */
808         NTSTATUS lsa_CREDRGETTARGETINFO();
809
810         /* Function 0x43 */
811         NTSTATUS lsa_CREDRPROFILELOADED();
812
813         /**********************/
814         /* Function 0x44 */
815         typedef struct {
816                 lsa_SidType sid_type;
817                 dom_sid2 *sid;
818                 uint32 sid_index;
819                 uint32 unknown;
820         } lsa_TranslatedSid3;
821
822         typedef struct {
823                 [range(0,1000)] uint32 count;
824                 [size_is(count)] lsa_TranslatedSid3 *sids[];
825         } lsa_TransSidArray3;
826
827         NTSTATUS lsa_LookupNames3 (
828                 [in,ref]     policy_handle *handle,
829                 [in,range(0,1000)] uint32 num_names,
830                 [in,size_is(num_names)]  lsa_String names[],
831                 [out]        lsa_RefDomainList *domains,
832                 [in,out,ref] lsa_TransSidArray3 *sids,
833                 [in]         uint16 level,
834                 [in,out,ref] uint32 *count,
835                 [in]         uint32 unknown1,
836                 [in]         uint32 unknown2
837                 );
838
839         /* Function 0x45 */
840         NTSTATUS lsa_CREDRGETSESSIONTYPES();
841
842         /* Function 0x46 */
843         NTSTATUS lsa_LSARREGISTERAUDITEVENT();
844
845         /* Function 0x47 */
846         NTSTATUS lsa_LSARGENAUDITEVENT();
847
848         /* Function 0x48 */
849         NTSTATUS lsa_LSARUNREGISTERAUDITEVENT();
850
851         /* Function 0x49 */
852         NTSTATUS lsa_LSARQUERYFORESTTRUSTINFORMATION();
853
854         /* Function 0x4a */
855         NTSTATUS lsa_LSARSETFORESTTRUSTINFORMATION();
856
857         /* Function 0x4b */
858         NTSTATUS lsa_CREDRRENAME();
859
860         /*****************/
861         /* Function 0x4c */
862
863         NTSTATUS lsa_LookupSids3(
864                 [in,ref]     lsa_SidArray *sids,
865                 [out]        lsa_RefDomainList *domains,
866                 [in,out,ref] lsa_TransNameArray2 *names,
867                 [in]         uint16 level,
868                 [in,out,ref] uint32 *count,
869                 [in]         uint32 unknown1,
870                 [in]         uint32 unknown2
871                 );
872
873         /* Function 0x4d */
874         NTSTATUS lsa_LSARLOOKUPNAMES4();
875
876         /* Function 0x4e */
877         NTSTATUS lsa_LSAROPENPOLICYSCE();
878
879         /* Function 0x4f */
880         NTSTATUS lsa_LSARADTREGISTERSECURITYEVENTSOURCE();
881
882         /* Function 0x50 */
883         NTSTATUS lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE();
884
885         /* Function 0x51 */
886         NTSTATUS lsa_LSARADTREPORTSECURITYEVENT();
887
888 }