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