r4003: run successful against a nt4 sp6 pdc with one nt4 sp6 trust and a w2k3 trust
[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:"),
10   pointer_default(unique),
11   helpstring("Local Server Authentication(?)"),
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                 lsa_String name;
40                 uint32 luid_low;
41                 uint32 luid_high;
42         } lsa_PrivEntry;
43
44         typedef struct {
45                 uint32 count;
46                 [size_is(count)] lsa_PrivEntry *privs;
47         } lsa_PrivArray;
48
49         NTSTATUS lsa_EnumPrivs (
50                 [in,ref]     policy_handle *handle,
51                 [in,out,ref] uint32 *resume_handle,
52                 [in]         uint32 max_count,
53                 [out,ref]    lsa_PrivArray *privs
54                 );
55
56         /******************/
57         /* Function: 0x03 */
58
59         NTSTATUS lsa_QuerySecurity (
60                 [in,ref]     policy_handle *handle,
61                 [in]         uint32 sec_info,
62                 [out]        sec_desc_buf *sdbuf
63                 );
64
65
66         /******************/
67         /* Function: 0x04 */
68         NTSTATUS lsa_SetSecObj ();
69
70
71         /******************/
72         /* Function: 0x05 */
73         NTSTATUS lsa_ChangePassword ();
74
75
76         /******************/
77         /* Function: 0x06 */
78         typedef struct {
79                 uint32  len; /* ignored */
80                 uint16  impersonation_level;
81                 uint8   context_mode;
82                 uint8   effective_only;
83         } lsa_QosInfo;
84         
85         typedef struct {
86                 uint32 len; /* ignored */
87                 uint8 *root_dir;
88                 unistr *object_name;
89                 uint32 attributes;
90                 security_descriptor *sec_desc;
91                 lsa_QosInfo *sec_qos;
92         } lsa_ObjectAttribute;
93
94         /* notice the screwup with the system_name - thats why MS created
95            OpenPolicy2 */
96         NTSTATUS lsa_OpenPolicy (
97                 [in]       uint16 *system_name,
98                 [in,ref]   lsa_ObjectAttribute *attr,
99                 [in]       uint32 access_mask,
100                 [out,ref]  policy_handle *handle
101                 );
102         
103
104
105         /******************/
106         /* Function: 0x07 */
107
108         typedef struct {
109                 uint32 percent_full;
110                 uint32 log_size;
111                 NTTIME retention_time;
112                 uint8  shutdown_in_progress;
113                 NTTIME time_to_shutdown;
114                 uint32 next_audit_record;
115                 uint32 unknown;
116         } lsa_AuditLogInfo;
117
118         typedef struct {
119                 uint32 auditing_mode;
120                 [size_is(count)] uint32 *settings;
121                 uint32 count;
122         } lsa_AuditEventsInfo;
123
124         typedef struct {
125                 lsa_String name;
126                 dom_sid2 *sid;
127         } lsa_DomainInfo;
128
129         typedef struct {
130                 lsa_String name;
131         } lsa_PDAccountInfo;
132
133         typedef struct {
134                 uint16 unknown; /* an midl padding bug? */
135                 uint16 role;
136         } lsa_ServerRole;
137
138         typedef struct {
139                 lsa_String source;
140                 lsa_String account;
141         } lsa_ReplicaSourceInfo;
142
143         typedef struct {
144                 uint32 paged_pool;
145                 uint32 non_paged_pool;
146                 uint32 min_wss;
147                 uint32 max_wss;
148                 uint32 pagefile;
149                 HYPER_T unknown;
150         } lsa_DefaultQuotaInfo;
151
152         typedef struct {
153                 HYPER_T modified_id;
154                 NTTIME db_create_time;
155         } lsa_ModificationInfo;
156
157         typedef struct {
158                 uint8 shutdown_on_full;
159         } lsa_AuditFullSetInfo;
160
161         typedef struct {
162                 uint16 unknown; /* an midl padding bug? */
163                 uint8 shutdown_on_full;
164                 uint8 log_is_full;
165         } lsa_AuditFullQueryInfo;
166
167         typedef struct {
168                 lsa_String name;
169                 lsa_String dns_domain;
170                 lsa_String dns_forest;
171                 GUID domain_guid;
172                 dom_sid2 *sid;
173         } lsa_DnsDomainInfo;
174
175         typedef enum {
176                 LSA_POLICY_INFO_AUDIT_LOG=1,
177                 LSA_POLICY_INFO_AUDIT_EVENTS=2,
178                 LSA_POLICY_INFO_DOMAIN=3,
179                 LSA_POLICY_INFO_PD=4,
180                 LSA_POLICY_INFO_ACCOUNT_DOMAIN=5,
181                 LSA_POLICY_INFO_ROLE=6,
182                 LSA_POLICY_INFO_REPLICA=7,
183                 LSA_POLICY_INFO_QUOTA=8,
184                 LSA_POLICY_INFO_DB=9,
185                 LSA_POLICY_INFO_AUDIT_FULL_SET=10,
186                 LSA_POLICY_INFO_AUDIT_FULL_QUERY=11,
187                 LSA_POLICY_INFO_DNS=12
188         } lsaPolicyInfo;
189
190         typedef union {
191                 [case(LSA_POLICY_INFO_AUDIT_LOG)]        lsa_AuditLogInfo       audit_log;
192                 [case(LSA_POLICY_INFO_AUDIT_EVENTS)]     lsa_AuditEventsInfo    audit_events;
193                 [case(LSA_POLICY_INFO_DOMAIN)]           lsa_DomainInfo         domain;
194                 [case(LSA_POLICY_INFO_PD)]               lsa_PDAccountInfo      pd;
195                 [case(LSA_POLICY_INFO_ACCOUNT_DOMAIN)]   lsa_DomainInfo         account_domain;
196                 [case(LSA_POLICY_INFO_ROLE)]             lsa_ServerRole         role;
197                 [case(LSA_POLICY_INFO_REPLICA)]          lsa_ReplicaSourceInfo  replica;
198                 [case(LSA_POLICY_INFO_QUOTA)]            lsa_DefaultQuotaInfo   quota;
199                 [case(LSA_POLICY_INFO_DB)]               lsa_ModificationInfo   db;
200                 [case(LSA_POLICY_INFO_AUDIT_FULL_SET)]   lsa_AuditFullSetInfo   auditfullset;
201                 [case(LSA_POLICY_INFO_AUDIT_FULL_QUERY)] lsa_AuditFullQueryInfo auditfullquery;
202                 [case(LSA_POLICY_INFO_DNS)]              lsa_DnsDomainInfo      dns;
203         } lsa_PolicyInformation;
204
205         NTSTATUS lsa_QueryInfoPolicy (
206                 [in,ref]                 policy_handle *handle,
207                 [in]                     uint16 level,
208                 [out,switch_is(level)]   lsa_PolicyInformation *info
209                 );
210
211         /******************/
212         /* Function:       0x08 */
213         NTSTATUS lsa_SetInfoPolicy ();
214
215         /******************/
216         /* Function:       0x09 */
217         NTSTATUS lsa_ClearAuditLog ();
218
219         /******************/
220         /* Function: 0x0a */
221         NTSTATUS lsa_CreateAccount (
222                 [in,ref]    policy_handle *handle,
223                 [in,ref]    dom_sid2 *sid,
224                 [in]        uint32 access_mask,
225                 [out,ref]   policy_handle *acct_handle
226                 );
227
228         /******************/
229         /* Function: 0x0b */
230         typedef struct {
231                 dom_sid2 *sid;
232         } lsa_SidPtr;
233         
234         typedef [public] struct {
235                 [range(0,1000)] uint32 num_sids;
236                 [size_is(num_sids)] lsa_SidPtr *sids;
237         } lsa_SidArray;
238
239         NTSTATUS lsa_EnumAccounts (
240                 [in,ref]     policy_handle *handle,
241                 [in,out,ref] uint32 *resume_handle,
242                 [in,range(0,1000)] uint32 num_entries,
243                 [out,ref]    lsa_SidArray *sids
244                 );
245
246
247         /*************************************************/
248         /* Function: 0x0c                                */
249
250         typedef struct {
251                 lsa_String name;
252                 dom_sid2  *sid;
253         } lsa_TrustInformation;
254
255         NTSTATUS lsa_CreateTrustedDomain(
256                 [in,ref]     policy_handle *handle,
257                 [in,ref]     lsa_TrustInformation *info,
258                 [in]         uint32 access_mask,
259                 [out,ref]    policy_handle *dom_handle
260                 );
261
262
263         /******************/
264         /* Function: 0x0d */
265
266         typedef struct {
267                 lsa_String name;
268                 dom_sid2 *sid;
269         } lsa_DomainInformation;
270
271         typedef struct {
272                 uint32 count;
273                 [size_is(count)] lsa_DomainInformation *domains;
274         } lsa_DomainList;
275
276         NTSTATUS lsa_EnumTrustDom (
277                 [in,ref]     policy_handle *handle,
278                 [in,out,ref] uint32 *resume_handle,
279                 [in,range(0,1000)] uint32 num_entries,
280                 [out,ref]    lsa_DomainList *domains
281                 );
282
283
284         /******************/
285         /* Function: 0x0e */
286
287         typedef struct {
288                 uint16 sid_type;
289                 uint32 rid;
290                 uint32 sid_index;
291         } lsa_TranslatedSid;
292
293         typedef struct {
294                 [range(0,1000)] uint32 count;
295                 [size_is(count)] lsa_TranslatedSid *sids;
296         } lsa_TransSidArray;
297
298         typedef struct {
299                 [range(0,1000)] uint32 count;
300                 [size_is(count)] lsa_TrustInformation *domains;
301                 uint32 max_count;
302         } lsa_RefDomainList;
303
304         NTSTATUS lsa_LookupNames (
305                 [in,ref]     policy_handle *handle,
306                 [in,range(0,1000)] uint32 num_names,
307                 [in,ref,size_is(num_names)]  lsa_String *names,
308                 [out]        lsa_RefDomainList *domains,
309                 [in,out,ref] lsa_TransSidArray *sids,
310                 [in]         uint16 level,
311                 [in,out,ref] uint32 *count
312                 );
313
314
315         /******************/
316         /* Function: 0x0f */
317
318         typedef struct {
319                 uint16 sid_type;
320                 lsa_String name;
321                 uint32 sid_index;
322         } lsa_TranslatedName;
323
324         typedef struct {
325                 [range(0,1000)] uint32 count;
326                 [size_is(count)] lsa_TranslatedName *names;
327         } lsa_TransNameArray;
328
329         NTSTATUS lsa_LookupSids (
330                 [in,ref]     policy_handle *handle,
331                 [in,ref]     lsa_SidArray *sids,
332                 [out]        lsa_RefDomainList *domains,
333                 [in,out,ref] lsa_TransNameArray *names,
334                 [in]         uint16 level,
335                 [in,out,ref] uint32 *count
336                 );
337
338
339         /* Function:        0x10 */
340         NTSTATUS lsa_CreateSecret(
341                 [in,ref]     policy_handle *handle,
342                 [in]         lsa_String       name,
343                 [in]         uint32         access_mask,
344                 [out,ref]    policy_handle *sec_handle
345                 );
346
347
348         /*****************************************/
349         /* Function:     0x11                    */
350         NTSTATUS lsa_OpenAccount (
351                 [in,ref]     policy_handle *handle,
352                 [in,ref]     dom_sid2 *sid,
353                 [in]         uint32 access_mask,
354                 [out,ref]    policy_handle *acct_handle
355                 );
356
357
358         /****************************************/
359         /* Function:    0x12                    */
360
361         typedef struct {
362                 uint32 low;
363                 uint32 high;
364         } lsa_LUID;
365         
366         typedef struct {
367                 lsa_LUID luid;
368                 uint32 attribute;
369         } lsa_LUIDAttribute;
370         
371         typedef struct {
372                 uint32 count;
373                 uint32 unknown;
374                 [size_is(count)] lsa_LUIDAttribute set[*];
375         } lsa_PrivilegeSet;
376         
377         NTSTATUS lsa_EnumPrivsAccount (
378                 [in,ref]     policy_handle *handle,
379                 [out]        lsa_PrivilegeSet *privs
380                 );
381
382
383         /* Function:            0x13 */
384         NTSTATUS lsa_AddPrivilegesToAccount();
385         
386         /* Function:         0x14 */
387         NTSTATUS lsa_RemovePrivilegesFromAccount();
388
389         /* Function:           0x15 */
390         NTSTATUS lsa_GetQuotasForAccount();
391         
392         /* Function:           0x16 */
393         NTSTATUS lsa_SetQuotasForAccount();
394         
395         /* Function:    0x17 */
396         NTSTATUS lsa_GetSystemAccessAccount();
397         /* Function:    0x18 */
398         NTSTATUS lsa_SetSystemAccessAccount();
399
400         /* Function:        0x19 */
401         NTSTATUS lsa_OpenTrustedDomain(
402                 [in,ref]     policy_handle *handle,
403                 [in,ref]     dom_sid2      *sid,
404                 [in]         uint32         access_mask,
405                 [out,ref]    policy_handle *trustdom_handle
406                 );
407
408         typedef [flag(NDR_PAHEX)] struct {
409                 uint32 length;
410                 uint32 size;
411                 [size_is(size),length_is(length)] uint8 *data;
412         } lsa_DATA_BUF;
413
414         typedef [flag(NDR_PAHEX)] struct {
415                 uint32 size;
416                 [size_is(size)] uint8 *data;
417         } lsa_DATA_BUF2;
418
419         typedef enum {
420                 LSA_TRUSTED_DOMAIN_INFO_NAME=1,
421                 LSA_TRUSTED_DOMAIN_INFO_2=2,
422                 LSA_TRUSTED_DOMAIN_INFO_FLAGS=3,
423                 LSA_TRUSTED_DOMAIN_INFO_PASSWORD=4,
424                 LSA_TRUSTED_DOMAIN_INFO_5=5,
425                 LSA_TRUSTED_DOMAIN_INFO_INFO_EX=6,
426                 LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO=7,
427                 LSA_TRUSTED_DOMAIN_INFO_FULL_INFO=8,
428                 LSA_TRUSTED_DOMAIN_INFO_INFO_ALL=12
429         } lsa_TrustDomInfoEnum;
430
431         typedef struct {
432                 lsa_String     netbios_name;
433         } lsa_TrustDomainInfoName;
434
435         typedef struct {
436                 uint32        flags;
437         } lsa_TrustDomainInfoFlags;
438
439         typedef struct {
440                 lsa_DATA_BUF *password;
441                 lsa_DATA_BUF *old_password;
442         } lsa_TrustDomainInfoPassword;
443
444         typedef struct {
445                 lsa_String     netbios_name;
446                 dom_sid2    *sid;
447         } lsa_TrustDomainInfo5;
448
449         typedef struct {
450                 lsa_String     domain_name;
451                 lsa_String     netbios_name;
452                 dom_sid2    *sid;
453                 uint32       unknown1;
454                 uint32       unknown2;
455                 uint32       unknown3;
456         } lsa_TrustDomainInfoInfoEx;
457
458         typedef struct {
459                 HYPER_T      unknown1;
460                 uint32       unknown2;
461                 lsa_DATA_BUF2 data;
462         } lsa_TrustDomainInfoBuffer;
463
464         typedef struct {
465                 uint32       unknown1;
466                 lsa_TrustDomainInfoBuffer *buff1;
467                 lsa_TrustDomainInfoBuffer *buff2;
468                 uint32       unknown2;
469                 lsa_TrustDomainInfoBuffer *buff3;
470                 lsa_TrustDomainInfoBuffer *buff4;
471         } lsa_TrustDomainInfoAuthInfo;
472
473         typedef struct {
474                 lsa_TrustDomainInfoInfoEx info_ex;
475                 lsa_TrustDomainInfoFlags flags;
476                 lsa_TrustDomainInfoAuthInfo  auth_info;
477         } lsa_TrustDomainInfoFullInfo;
478
479         typedef struct {
480                 lsa_TrustDomainInfoInfoEx info_ex;
481                 lsa_DATA_BUF2        data1;
482         } lsa_TrustDomainInfo11;
483
484         typedef struct {
485                 lsa_TrustDomainInfoInfoEx info_ex;
486                 lsa_DATA_BUF2        data1;
487                 lsa_TrustDomainInfoFlags flags;
488                 lsa_TrustDomainInfoAuthInfo  auth_info;
489         } lsa_TrustDomainInfoInfoAll;
490
491         typedef union {
492                 [case(LSA_TRUSTED_DOMAIN_INFO_NAME)]      lsa_TrustDomainInfoName      name;
493                 [case(LSA_TRUSTED_DOMAIN_INFO_FLAGS)]     lsa_TrustDomainInfoFlags     flags;
494                 [case(LSA_TRUSTED_DOMAIN_INFO_PASSWORD)]  lsa_TrustDomainInfoPassword  password;
495                 [case(LSA_TRUSTED_DOMAIN_INFO_5)]         lsa_TrustDomainInfo5         info5;
496                 [case(LSA_TRUSTED_DOMAIN_INFO_INFO_EX)]   lsa_TrustDomainInfoInfoEx    info_ex;
497                 [case(LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO)] lsa_TrustDomainInfoAuthInfo  auth_info;
498                 [case(LSA_TRUSTED_DOMAIN_INFO_FULL_INFO)] lsa_TrustDomainInfoFullInfo  full_info;
499                 [case(11)]    lsa_TrustDomainInfo11 info11;
500                 [case(LSA_TRUSTED_DOMAIN_INFO_INFO_ALL)]  lsa_TrustDomainInfoInfoAll   info_all;
501         } lsa_TrustedDomainInfo;
502
503         /* Function:       0x1a */
504         NTSTATUS lsa_QueryTrustedDomainInfo(
505                 [in,ref]     policy_handle *trustdom_handle,
506                 [in]         uint16         level, 
507                 [out,switch_is(level)] lsa_TrustedDomainInfo *info
508                 );
509
510         /* Function:     0x1b */
511         NTSTATUS lsa_SetInformationTrustedDomain();
512
513         /* Function:          0x1c */
514         NTSTATUS lsa_OpenSecret(
515                 [in,ref]     policy_handle *handle,
516                 [in]         lsa_String       name,
517                 [in]         uint32         access_mask,
518                 [out,ref]    policy_handle *sec_handle
519                 );
520
521         /* Function:           0x1d */
522
523         NTSTATUS lsa_SetSecret(
524                 [in,ref]     policy_handle *handle,
525                 [in]         lsa_DATA_BUF     *new_val,
526                 [in]         lsa_DATA_BUF     *old_val
527                 );
528
529         typedef struct {
530                 lsa_DATA_BUF *buf;
531         } lsa_DATA_BUF_PTR;
532
533         /* Function:         0x1e */
534         NTSTATUS lsa_QuerySecret (
535                 [in,ref]     policy_handle *handle,
536                 [in,out]     lsa_DATA_BUF_PTR  *new_val,
537                 [in,out]     NTTIME            *new_mtime,
538                 [in,out]     lsa_DATA_BUF_PTR  *old_val,
539                 [in,out]     NTTIME            *old_mtime
540                 );
541
542         /* Function:     0x1f */
543         NTSTATUS lsa_LookupPrivValue();
544
545
546         /* Function:      0x20 */
547         NTSTATUS lsa_LookupPrivName (
548                 [in,ref]     policy_handle *handle,
549                 [in,ref]     lsa_LUID *luid,
550                 [out]        lsa_String *name
551                 );
552
553
554         /*******************/
555         /* Function:  0x21 */
556         NTSTATUS lsa_LookupPrivDisplayName (
557                 [in,ref]     policy_handle *handle,
558                 [in,ref]     lsa_String *name,
559                 [out]        lsa_String *disp_name,
560                 /* see http://www.microsoft.com/globaldev/nlsweb/ for
561                    language definitions */
562                 [in,out,ref] uint16 *language_id,
563                 [in]         uint16 unknown
564                 );
565
566         /* Function:        0x22 */
567         NTSTATUS lsa_DeleteObject();
568
569         
570         /*******************/
571         /* Function:      0x23 */
572         NTSTATUS lsa_EnumAccountsWithUserRight (
573                 [in,ref]     policy_handle *handle,
574                 [in]         lsa_String *name,
575                 [out,ref]    lsa_SidArray *sids
576                 );
577
578         /* Function:      0x24 */
579         typedef struct {
580                 unistr *name;
581         } lsa_RightAttribute;
582         
583         typedef struct {
584                 uint32 count;
585                 [size_is(count)] lsa_String *names;
586         } lsa_RightSet;
587         
588         NTSTATUS lsa_EnumAccountRights (
589                 [in,ref]     policy_handle *handle,
590                 [in,ref]     dom_sid2 *sid,
591                 [out,ref]    lsa_RightSet *rights
592                 );
593
594
595         /**********************/
596         /* Function:       0x25 */
597         NTSTATUS lsa_AddAccountRights (
598                 [in,ref]     policy_handle *handle,
599                 [in,ref]     dom_sid2 *sid,
600                 [in,ref]     lsa_RightSet *rights
601                 );
602         
603         /**********************/
604         /* Function:       0x26 */
605         NTSTATUS lsa_RemoveAccountRights (
606                 [in,ref]     policy_handle *handle,
607                 [in,ref]     dom_sid2 *sid,
608                 [in]         uint32 unknown,
609                 [in,ref]     lsa_RightSet *rights
610                 );
611
612         /* Function:   0x27 */
613         NTSTATUS lsa_QueryTrustedDomainInfoBySid(
614                 [in,ref]               policy_handle         *handle,
615                 [in,ref]               dom_sid2              *dom_sid,
616                 [in]                   uint16                 level, 
617                 [out,switch_is(level)] lsa_TrustedDomainInfo *info
618         );
619
620         /* Function:     0x28 */
621         NTSTATUS lsa_SetTrustDomainInfo();
622         /* Function:      0x29 */
623         NTSTATUS lsa_DeleteTrustDomain();
624         /* Function:       0x2a */
625         NTSTATUS lsa_StorePrivateData();
626         /* Function:        0x2b */
627         NTSTATUS lsa_RetrievePrivateData();
628
629
630         /**********************/
631         /* Function:     0x2c */
632         NTSTATUS lsa_OpenPolicy2 (
633                 [in]      unistr *system_name,
634                 [in,ref]  lsa_ObjectAttribute *attr,
635                 [in]      uint32 access_mask,
636                 [out,ref] policy_handle *handle
637                 );
638
639
640         /* Function:    0x2d */
641         NTSTATUS lsa_GetUserName();
642
643         /**********************/
644         /* Function:          0x2e */
645
646         NTSTATUS lsa_QueryInfoPolicy2(
647                 [in,ref]                 policy_handle *handle,
648                 [in]                     uint16 level,
649                 [out,switch_is(level)]   lsa_PolicyInformation *info
650                 );
651
652         /* Function 0x2f */
653         NTSTATUS lsa_SetInfoPolicy2();
654
655         /**********************/
656         /* Function 0x30 */
657         NTSTATUS lsa_QueryTrustedDomainInfoByName(
658                 [in,ref]               policy_handle         *handle,
659                 [in]                   lsa_String             trusted_domain,
660                 [in]                   uint16                 level, 
661                 [out,switch_is(level)] lsa_TrustedDomainInfo *info
662                 );
663
664         /* Function 0x31 */
665         NTSTATUS lsa_SetTrustedDomainInfoByName();
666
667         /* Function 0x32 */
668         NTSTATUS lsa_EnumTrustedDomainsEx();
669
670         /* Function 0x33 */
671         NTSTATUS lsa_CreateTrustedDomainEx();
672
673         /* Function 0x34 */
674         NTSTATUS lsa_CloseTrustedDomainEx();
675
676         /* Function 0x35 */
677         NTSTATUS lsa_QueryDomainInformationPolicy();
678
679         /* Function 0x36 */
680         NTSTATUS lsa_SetDomInfoPolicy();
681
682         /**********************/
683         /* Function 0x37 */
684         NTSTATUS lsa_OpenTrustedDomainByName(
685                 [in,ref]     policy_handle *handle,
686                 [in]         lsa_String     name,
687                 [in]         uint32         access_mask,
688                 [out,ref]    policy_handle *trustdom_handle
689                 );
690
691         /* Function 0x38 */
692         NTSTATUS lsa_TestCall();
693
694         /**********************/
695         /* Function 0x39 */
696
697         typedef struct {
698                 uint16 sid_type;
699                 lsa_String name;
700                 uint32 sid_index;
701                 uint32 unknown;
702         } lsa_TranslatedName2;
703
704         typedef struct {
705                 [range(0,1000)] uint32 count;
706                 [size_is(count)] lsa_TranslatedName2 *names;
707         } lsa_TransNameArray2;
708
709         NTSTATUS lsa_LookupSids2(
710                 [in,ref]     policy_handle *handle,
711                 [in,ref]     lsa_SidArray *sids,
712                 [out]        lsa_RefDomainList *domains,
713                 [in,out,ref] lsa_TransNameArray2 *names,
714                 [in]         uint16 level,
715                 [in,out,ref] uint32 *count,
716                 [in]         uint32 unknown1,
717                 [in]         uint32 unknown2
718                 );
719
720         /**********************/
721         /* Function 0x3a */
722
723         typedef struct {
724                 uint16 sid_type;
725                 uint32 rid;
726                 uint32 sid_index;
727                 uint32 unknown;
728         } lsa_TranslatedSid2;
729
730         typedef struct {
731                 [range(0,1000)] uint32 count;
732                 [size_is(count)] lsa_TranslatedSid2 *sids;
733         } lsa_TransSidArray2;
734
735         NTSTATUS lsa_LookupNames2 (
736                 [in,ref]     policy_handle *handle,
737                 [in,range(0,1000)] uint32 num_names,
738                 [in,ref,size_is(num_names)]  lsa_String *names,
739                 [out]        lsa_RefDomainList *domains,
740                 [in,out,ref] lsa_TransSidArray2 *sids,
741                 [in]         uint16 level,
742                 [in,out,ref] uint32 *count,
743                 [in]         uint32 unknown1,
744                 [in]         uint32 unknown2
745                 );
746
747         /* Function 0x3b */
748         NTSTATUS lsa_CreateTrustedDomainEx2();
749 }