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