Add lots of missing functions to LSA RPC interface
[reactos.git] / reactos / include / reactos / idl / lsa.idl
1 /*
2 * Local Security Authority interface definition
3 */
4
5 #include <ms-dtyp.idl>
6
7 typedef [context_handle] unsigned long LSAPR_HANDLE;
8 typedef LSAPR_HANDLE *PLSAPR_HANDLE;
9
10 cpp_quote("#ifndef _WINNT_H");
11 typedef LARGE_INTEGER LUID;
12 cpp_quote("#endif");
13
14 cpp_quote("#ifndef _NTDEF_");
15
16 typedef long NTSTATUS;
17
18 typedef struct _STRING {
19 WORD Length;
20 WORD MaximumLength;
21 [size_is(MaximumLength), length_is(Length)] LPSTR Buffer;
22 } STRING, *PSTRING;
23
24 cpp_quote("#endif");
25
26 typedef struct _LSAPR_ACL {
27 BYTE AclRevision;
28 BYTE Sbz1;
29 WORD AclSize;
30 [size_is(AclSize - 4)] BYTE Dummy1[*];
31 } LSAPR_ACL, *PLSAPR_ACL;
32
33 typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
34
35 typedef struct _LSAPR_SECURITY_DESCRIPTOR {
36 BYTE Revision;
37 BYTE Sbz1;
38 SECURITY_DESCRIPTOR_CONTROL Control;
39 PRPC_SID Owner;
40 PRPC_SID Group;
41 PLSAPR_ACL Sacl;
42 PLSAPR_ACL Dacl;
43 } LSAPR_SECURITY_DESCRIPTOR, *PLSAPR_SECURITY_DESCRIPTOR;
44
45 cpp_quote("#if 0");
46
47 typedef enum _SECURITY_IMPERSONATION_LEVEL {
48 SecurityAnonymous = 0,
49 SecurityIdentification,
50 SecurityImpersonation,
51 SecurityDelegation,
52 } SECURITY_IMPERSONATION_LEVEL, *PSECURITY_IMPERSONATION_LEVEL;
53
54 typedef BYTE SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE;
55
56 typedef struct _SECURITY_QUALITY_OF_SERVICE {
57 DWORD Length;
58 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
59 SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
60 BYTE EffectiveOnly;
61 } SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE;
62
63 cpp_quote("#endif");
64
65 typedef struct _LSAPR_OBJECT_ATTRIBUTES {
66 DWORD Length;
67 BYTE *RootDirectory;
68 PSTRING ObjectName;
69 DWORD Attributes;
70 PLSAPR_SECURITY_DESCRIPTOR SecurityDescriptor;
71 PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;
72 } LSAPR_OBJECT_ATTRIBUTES, *PLSAPR_OBJECT_ATTRIBUTES;
73
74 typedef unsigned long ACCESS_MASK;
75
76 typedef unsigned long SECURITY_INFORMATION;
77
78 typedef struct _LSAPR_POLICY_PRIVILEGE_DEF {
79 RPC_UNICODE_STRING Name;
80 LUID LocalValue;
81 } LSAPR_POLICY_PRIVILEGE_DEF, *PLSAPR_POLICY_PRIVILEGE_DEF;
82
83 typedef struct _LSAPR_PRIVILEGE_ENUM_BUFFER {
84 DWORD Entries;
85 [size_is(Entries)] PLSAPR_POLICY_PRIVILEGE_DEF Privileges;
86 } LSAPR_PRIVILEGE_ENUM_BUFFER, *PLSAPR_PRIVILEGE_ENUM_BUFFER;
87
88 typedef struct _LSAPR_ACCOUNT_INFORMATION {
89 PRPC_SID Sid;
90 } LSAPR_ACCOUNT_INFORMATION, *PLSAPR_ACCOUNT_INFORMATION;
91
92 typedef struct _LSAPR_ACCOUNT_ENUM_BUFFER {
93 DWORD EntriesRead;
94 [size_is(EntriesRead)] PLSAPR_ACCOUNT_INFORMATION Information;
95 } LSAPR_ACCOUNT_ENUM_BUFFER, *PLSAPR_ACCOUNT_ENUM_BUFFER;
96
97 cpp_quote("#ifndef _NTSECAPI_H");
98 typedef RPC_UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
99 cpp_quote("#endif");
100
101 typedef struct _LSAPR_TRUST_INFORMATION {
102 RPC_UNICODE_STRING Name;
103 PRPC_SID Sid;
104 } LSAPR_TRUST_INFORMATION, *PLSAPR_TRUST_INFORMATION;
105
106 typedef struct _LSAPR_REFERENCED_DOMAIN_LIST {
107 DWORD Entries;
108 [size_is(Entries)] PLSAPR_TRUST_INFORMATION Domains;
109 DWORD MaxEntries;
110 } LSAPR_REFERENCED_DOMAIN_LIST, *PLSAPR_REFERENCED_DOMAIN_LIST;
111
112 cpp_quote("#if 0");
113
114 typedef enum _SID_NAME_USE {
115 SidTypeUser = 1,
116 SidTypeGroup,
117 SidTypeDomain,
118 SidTypeAlias,
119 SidTypeWellKnownGroup,
120 SidTypeDeletedAccount,
121 SidTypeInvalid,
122 SidTypeUnknown,
123 SidTypeComputer,
124 SidTypeLabel,
125 } SID_NAME_USE, *PSID_NAME_USE;
126
127 cpp_quote("#endif");
128
129 cpp_quote("#ifndef _NTDEF_");
130
131 typedef struct _LSA_TRANSLATED_SID {
132 SID_NAME_USE Use;
133 DWORD RelativeId;
134 LONG DomainIndex;
135 } LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
136
137 cpp_quote("#endif");
138
139 typedef struct _LSAPR_TRANSLATED_SIDS {
140 DWORD Entries;
141 [size_is(Entries)] PLSA_TRANSLATED_SID Sids;
142 } LSAPR_TRANSLATED_SIDS, *PLSAPR_TRANSLATED_SIDS;
143
144 typedef enum _LSAP_LOOKUP_LEVEL {
145 LsapLookupWksta = 1,
146 LsapLookupPDC,
147 LsapLookupTDL,
148 LsapLookupGC,
149 LsapLookupXForestReferral,
150 LsapLookupXForestResolve,
151 LsapLookupRODCReferralToFullDC,
152 } LSAP_LOOKUP_LEVEL, *PLSAP_LOOKUP_LEVEL;
153
154 typedef struct _LSAPR_SID_INFORMATION {
155 PRPC_SID Sid;
156 } LSAPR_SID_INFORMATION, *PLSAPR_SID_INFORMATION;
157
158 typedef struct _LSAPR_SID_ENUM_BUFFER {
159 DWORD Entries;
160 [size_is(Entries)] PLSAPR_SID_INFORMATION SidInfo;
161 } LSAPR_SID_ENUM_BUFFER, *PLSAPR_SID_ENUM_BUFFER;
162
163 typedef struct _LSAPR_TRANSLATED_NAME {
164 SID_NAME_USE Use;
165 RPC_UNICODE_STRING Name;
166 LONG DomainIndex;
167 } LSAPR_TRANSLATED_NAME, *PLSAPR_TRANSLATED_NAME;
168
169 typedef struct _LSAPR_TRANSLATED_NAMES {
170 DWORD Entries;
171 [size_is(Entries)] PLSAPR_TRANSLATED_NAME Names;
172 } LSAPR_TRANSLATED_NAMES, *PLSAPR_TRANSLATED_NAMES;
173
174 typedef struct _LSAPR_TRANSLATED_NAME_EX {
175 SID_NAME_USE Use;
176 RPC_UNICODE_STRING Name;
177 LONG DomainIndex;
178 DWORD Flags;
179 } LSAPR_TRANSLATED_NAME_EX, *PLSAPR_TRANSLATED_NAME_EX;
180
181 typedef struct _LSAPR_TRANSLATED_NAMES_EX {
182 DWORD Entries;
183 [size_is(Entries)] PLSAPR_TRANSLATED_NAME_EX Names;
184 } LSAPR_TRANSLATED_NAMES_EX, *PLSAPR_TRANSLATED_NAMES_EX;
185
186 typedef struct _LSAPR_TRANSLATED_SID_EX {
187 SID_NAME_USE Use;
188 DWORD RelativeId;
189 LONG DomainIndex;
190 DWORD Flags;
191 } LSAPR_TRANSLATED_SID_EX, *PLSAPR_TRANSLATED_SID_EX;
192
193 typedef struct _LSAPR_TRANSLATED_SIDS_EX {
194 DWORD Entries;
195 [size_is(Entries)] PLSAPR_TRANSLATED_SID_EX Sids;
196 } LSAPR_TRANSLATED_SIDS_EX, *PLSAPR_TRANSLATED_SIDS_EX;
197
198 typedef struct _LSAPR_TRANSLATED_SID_EX2 {
199 SID_NAME_USE Use;
200 PRPC_SID Sid;
201 LONG DomainIndex;
202 DWORD Flags;
203 } LSAPR_TRANSLATED_SID_EX2, *PLSAPR_TRANSLATED_SID_EX2;
204
205 typedef struct _LSAPR_TRANSLATED_SIDS_EX2 {
206 DWORD Entries;
207 [size_is(Entries)] PLSAPR_TRANSLATED_SID_EX2 Sids;
208 } LSAPR_TRANSLATED_SIDS_EX2, *PLSAPR_TRANSLATED_SIDS_EX2;
209
210 typedef LSAPR_TRUST_INFORMATION LSAPR_TRUSTED_DOMAIN_INFORMATION_BASIC;
211
212 typedef struct _LSAPR_SR_SECURITY_DESCRIPTOR {
213 DWORD Length;
214 [size_is(Length)] BYTE *SecurityDescriptor;
215 } LSAPR_SR_SECURITY_DESCRIPTOR, *PLSAPR_SR_SECURITY_DESCRIPTOR;
216
217 cpp_quote("#ifndef _NTSECAPI_H");
218 typedef enum _POLICY_INFORMATION_CLASS {
219 PolicyAuditLogInformation = 1,
220 PolicyAuditEventsInformation,
221 PolicyPrimaryDomainInformation,
222 PolicyPdAccountInformation,
223 PolicyAccountDomainInformation,
224 PolicyLsaServerRoleInformation,
225 PolicyReplicaSourceInformation,
226 PolicyDefaultQuotaInformation,
227 PolicyModificationInformation,
228 PolicyAuditFullSetInformation,
229 PolicyAuditFullQueryInformation,
230 PolicyDnsDomainInformation,
231 PolicyDnsDomainInformationInt,
232 PolicyLocalAccountDomainInformation,
233 PolicyLastEntry,
234 } POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
235
236 typedef struct _POLICY_AUDIT_LOG_INFO {
237 DWORD AuditLogPercentFull;
238 DWORD MaximumLogSize;
239 LARGE_INTEGER AuditRetentionPeriod;
240 BYTE AuditLogFullShutdownInProgress;
241 LARGE_INTEGER TimeToShutdown;
242 DWORD NextAuditRecordId;
243 } POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO;
244 cpp_quote("#endif");
245
246 typedef struct _LSAPR_POLICY_AUDIT_EVENTS_INFO {
247 BYTE AuditingMode;
248 [size_is(MaximumAuditEventCount)] DWORD *EventAuditingOptions;
249 DWORD MaximumAuditEventCount;
250 } LSAPR_POLICY_AUDIT_EVENTS_INFO, *PLSAPR_POLICY_AUDIT_EVENTS_INFO;
251
252 typedef struct _LSAPR_POLICY_PRIMARY_DOM_INFO {
253 RPC_UNICODE_STRING Name;
254 PRPC_SID Sid;
255 } LSAPR_POLICY_PRIMARY_DOM_INFO, *PLSAPR_POLICY_PRIMARY_DOM_INFO;
256
257 typedef struct _LSAPR_POLICY_ACCOUNT_DOM_INFO {
258 RPC_UNICODE_STRING DomainName;
259 PRPC_SID Sid;
260 } LSAPR_POLICY_ACCOUNT_DOM_INFO, *PLSAPR_POLICY_ACCOUNT_DOM_INFO;
261
262 typedef struct _LSAPR_POLICY_PD_ACCOUNT_INFO {
263 RPC_UNICODE_STRING Name;
264 } LSAPR_POLICY_PD_ACCOUNT_INFO, *PLSAPR_POLICY_PD_ACCOUNT_INFO;
265
266 cpp_quote("#ifndef _NTSECAPI_H");
267 typedef enum _POLICY_LSA_SERVER_ROLE {
268 PolicyServerRoleBackup = 2,
269 PolicyServerRolePrimary,
270 } POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE;
271
272 typedef struct _POLICY_LSA_SERVER_ROLE_INFO {
273 POLICY_LSA_SERVER_ROLE LsaServerRole;
274 } POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO;
275 cpp_quote("#endif");
276
277 typedef struct _POLICY_LSA_REPLICA_SRCE_INFO {
278 RPC_UNICODE_STRING ReplicaSource;
279 RPC_UNICODE_STRING ReplicaAccountName;
280 } POLICY_LSA_REPLICA_SRCE_INFO, *PPOLICY_LSA_REPLICA_SRCE_INFO;
281
282 cpp_quote("#ifndef _WINNT_H");
283 typedef struct _QUOTA_LIMITS {
284 INT64 PagedPoolLimit;
285 INT64 NonPagedPoolLimit;
286 INT64 MinimumWorkingSetSize;
287 INT64 MaximumWorkingSetSize;
288 INT64 PagefileLimit;
289 LARGE_INTEGER TimeLimit;
290 } QUOTA_LIMITS, *PQUOTA_LIMITS;
291 cpp_quote("#endif");
292
293 cpp_quote("#ifndef _NTSECAPI_H");
294 typedef struct _POLICY_DEFAULT_QUOTA_INFO {
295 QUOTA_LIMITS QuotaLimits;
296 } POLICY_DEFAULT_QUOTA_INFO, *PPOLICY_DEFAULT_QUOTA_INFO;
297
298 typedef struct _POLICY_MODIFICATION_INFO {
299 LARGE_INTEGER ModifiedId;
300 LARGE_INTEGER DatabaseCreationTime;
301 } POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO;
302 cpp_quote("#endif");
303
304 typedef struct _POLICY_FULL_SET_INFO {
305 BOOL ShutDownOnFull;
306 } POLICY_FULL_SET_INFO, *PPOLICY_FULL_SET_INFO;
307
308 cpp_quote("#ifndef _NTSECAPI_H");
309 typedef struct _POLICY_AUDIT_FULL_QUERY_INFO {
310 BOOL ShutDownOnFull;
311 BOOL LogIsFull;
312 } POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO;
313 cpp_quote("#endif");
314
315 typedef struct _LSAPR_POLICY_DNS_DOMAIN_INFO {
316 RPC_UNICODE_STRING Name;
317 RPC_UNICODE_STRING DnsDomainName;
318 RPC_UNICODE_STRING DnsForestName;
319 GUID DomainGuid;
320 PRPC_SID Sid;
321 } LSAPR_POLICY_DNS_DOMAIN_INFO, *PLSAPR_POLICY_DNS_DOMAIN_INFO;
322
323 /*typedef
324 [switch_type(POLICY_INFORMATION_CLASS)] union _LSAPR_POLICY_INFORMATION {
325 [case(PolicyAuditLogInformation)] POLICY_AUDIT_LOG_INFO PolicyAuditLogInfo;
326 [case(PolicyAuditEventsInformation)] POLICY_AUDIT_EVENTS_INFO PolicyAuditEventsInfo;
327 [case(PolicyPrimaryDomainInformation)] POLICY_PRIMARY_DOM_INFO PolicyPrimaryDomInfo;
328 [case(PolicyPdAccountInformation)] POLICY_PD_ACCOUNT_INFO PolicyPdAccountInfo;
329 [case(PolicyAccountDomainInformation)] POLICY_ACCOUNT_DOM_INFO PolicyAccountDomainInfo;
330 [case(PolicyLsaServerRoleInformation)] POLICY_LSA_SERVER_ROLE_INFO PolicyServerRoleInfo;
331 [case(PolicyReplicaSourceInformation)] POLICY_REPLICA_SRCE_INFO PolicyReplicaSourceInfo;
332 [case(PolicyDefaultQuotaInformation)] POLICY_DEFAULT_QUOTA_INFO PolicyDefaultQuotaInfo;
333 [case(PolicyModificationInformation)] POLICY_MODIFICATION_INFO PolicyModificationInfo;
334 [case(PolicyAuditFullSetInformation)] POLICY_AUDIT_FULL_SET_INFO PolicyAuditFullSetInfo;
335 [case(PolicyAuditFullQueryInformation)] POLICY_AUDIT_FULL_QUERY_INFO PolicyAuditFullQueryInfo;
336 [case(PolicyDnsDomainInformation)] LSAPR_DNS_DOMAIN_INFO PolicyDnsDomainInfo;
337 [case(PolicyDnsDomainInformationInt)] LSAPR_DNS_DOMAIN_INFO PolicyDnsDomainInfoInt;
338 [case(PolicyLocalAccountDomainInformation)] LSAPR_POLICY_ACCOUNT_DOM_INFO PolicyLocalAccountDomainInfo;
339 } LSAPR_POLICY_INFORMATION, *PLSAPR_POLICY_INFORMATION;*/
340
341 typedef struct _LSAPR_TRUSTED_ENUM_BUFFER {
342 DWORD EntriesRead;
343 [size_is(EntriesRead)] PLSAPR_TRUST_INFORMATION Information;
344 } LSAPR_TRUSTED_ENUM_BUFFER, *PLSAPR_TRUSTED_ENUM_BUFFER;
345
346 cpp_quote("#ifndef _NTSECAPI_H");
347 typedef enum _TRUSTED_INFORMATION_CLASS {
348 TrustedDomainNameInformation = 1,
349 TrustedControllersInformation,
350 TrustedPosixOffsetInformation,
351 TrustedPasswordInformation,
352 TrustedDomainInformationBasic,
353 TrustedDomainInformationEx,
354 TrustedDomainAuthInformation,
355 TrustedDomainFullInformation,
356 TrustedDomainAuthInformationInternal,
357 TrustedDomainFullInformationInternal,
358 TrustedDomainInformationEx2Internal,
359 TrustedDomainFullInformation2Internal,
360 TrustedDomainSupportedEncryptionTypes,
361 } TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS;
362 cpp_quote("#endif");
363
364 typedef struct _LSAPR_TRUSTED_DOMAIN_NAME_INFO {
365 RPC_UNICODE_STRING Name;
366 } LSAPR_TRUSTED_DOMAIN_NAME_INFO, *PLSAPR_TRUSTED_DOMAIN_NAME_INFO;
367
368 typedef struct _LSAPR_TRUSTED_CONTROLLERS_INFO {
369 DWORD Entries;
370 [size_is(Entries)] PRPC_UNICODE_STRING Names;
371 } LSAPR_TRUSTED_CONTROLLERS_INFO, *PLSAPR_TRUSTED_CONTROLLERS_INFO;
372
373 cpp_quote("#ifndef _NTSECAPI_H");
374 typedef struct _TRUSTED_POSIX_OFFSET_INFO {
375 DWORD Offset;
376 } TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO;
377 cpp_quote("#endif");
378
379 typedef struct _LSAPR_CR_CIPHER_VALUE {
380 DWORD Length;
381 DWORD MaximumLength;
382 [size_is(MaximumLength), length_is(Length)] BYTE *Buffer;
383 } LSAPR_CR_CIPHER_VALUE, *PLSAPR_CR_CIPHER_VALUE;
384
385 typedef struct _LSAPR_TRUSTED_PASSWORD_INFO {
386 PLSAPR_CR_CIPHER_VALUE Password;
387 PLSAPR_CR_CIPHER_VALUE OldPassword;
388 } LSAPR_TRUSTED_PASSWORD_INFO, *PLSAPR_TRUSTED_PASSWORD_INFO;
389
390 typedef struct _LSAPR_USER_RIGHT_SET {
391 DWORD Entries;
392 [size_is(Entries)] PRPC_UNICODE_STRING UserRights;
393 } LSAPR_USER_RIGHT_SET, *PLSAPR_USER_RIGHT_SET;
394
395 cpp_quote("#ifndef _NTSECAPI_H");
396 typedef enum _POLICY_DOMAIN_INFORMATION_CLASS {
397 PolicyDomainQualityOfServiceInformation = 1,
398 PolicyDomainEfsInformation = 2,
399 PolicyDomainKerberosTicketInformation = 3,
400 } POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS;
401
402 typedef struct _POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO {
403 DWORD QualityOfService;
404 } POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO, *PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
405 cpp_quote("#endif");
406
407 typedef struct _LSAPR_POLICY_DOMAIN_EFS_INFO {
408 DWORD InfoLength;
409 [size_is(InfoLength)] BYTE *EfsBlob;
410 } LSAPR_POLICY_DOMAIN_EFS_INFO, *PLSAPR_POLICY_DOMAIN_EFS_INFO;
411
412 cpp_quote("#ifndef _NTSECAPI_H");
413 typedef struct _POLICY_DOMAIN_KERBEROS_TICKET_INFO {
414 DWORD AuthenticationOptions;
415 LARGE_INTEGER MaxServiceTicketAge;
416 LARGE_INTEGER MaxTicketAge;
417 LARGE_INTEGER MaxRenewAge;
418 LARGE_INTEGER MaxClockSkew;
419 LARGE_INTEGER Reserved;
420 } POLICY_DOMAIN_KERBEROS_TICKET_INFO, *PPOLICY_DOMAIN_KERBEROS_TICKET_INFO;
421 cpp_quote("#endif");
422
423 typedef
424 [switch_type(POLICY_DOMAIN_INFORMATION_CLASS)] union _LSAPR_POLICY_DOMAIN_INFORMATION {
425 [case(PolicyDomainQualityOfServiceInformation)] POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO PolicyDomainQualityOfServiceInfo;
426 [case(PolicyDomainEfsInformation)] LSAPR_POLICY_DOMAIN_EFS_INFO PolicyDomainEfsInfo;
427 [case(PolicyDomainKerberosTicketInformation)] POLICY_DOMAIN_KERBEROS_TICKET_INFO PolicyDomainKerbTicketInfo;
428 } LSAPR_POLICY_DOMAIN_INFORMATION, *PLSAPR_POLICY_DOMAIN_INFORMATION;
429
430 typedef struct _LSAPR_TRUSTED_DOMAIN_INFORMATION_EX {
431 RPC_UNICODE_STRING Name;
432 RPC_UNICODE_STRING FlatName;
433 PRPC_SID Sid;
434 DWORD TrustDirection;
435 DWORD TrustType;
436 DWORD TrustAttributes;
437 } LSAPR_TRUSTED_DOMAIN_INFORMATION_EX, *PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX;
438
439 typedef struct _LSAPR_TRUSTED_ENUM_BUFFER_EX {
440 DWORD EntriesRead;
441 [size_is(EntriesRead)] PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX EnumerationBuffer;
442 } LSAPR_TRUSTED_ENUM_BUFFER_EX, *PLSAPR_TRUSTED_ENUM_BUFFER_EX;
443
444 typedef struct _LSAPR_TRUSTED_DOMAIN_INFORMATION_EX2 {
445 RPC_UNICODE_STRING Name;
446 RPC_UNICODE_STRING FlatName;
447 PRPC_SID Sid;
448 DWORD TrustDirection;
449 DWORD TrustType;
450 DWORD TrustAttributes;
451 DWORD ForestTrustLength;
452 [size_is(ForestTrustLength)] BYTE *ForestTrustInfo;
453 } LSAPR_TRUSTED_DOMAIN_INFORMATION_EX2, *PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX2;
454
455 typedef struct _LSAPR_AUTH_INFORMATION {
456 LARGE_INTEGER LastUpdateTime;
457 DWORD AuthType;
458 DWORD AuthInfoLength;
459 [size_is(AuthInfoLength)] BYTE *AuthInfo;
460 } LSAPR_AUTH_INFORMATION, *PLSAPR_AUTH_INFORMATION;
461
462 typedef struct _LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION {
463 DWORD IncomingAuthInfos;
464 PLSAPR_AUTH_INFORMATION IncomingAuthenticationInformation;
465 PLSAPR_AUTH_INFORMATION IncomingPreviousAuthenticationInformation;
466 DWORD OutgoingAuthInfos;
467 PLSAPR_AUTH_INFORMATION OutgoingAuthenticationInformation;
468 PLSAPR_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation;
469 } LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION, *PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION;
470
471 typedef struct _LSAPR_TRUSTED_DOMAIN_AUTH_BLOB {
472 DWORD AuthSize;
473 [size_is(AuthSize)] BYTE *AuthBlob;
474 } LSAPR_TRUSTED_DOMAIN_AUTH_BLOB, *PLSAPR_TRUSTED_DOMAIN_AUTH_BLOB;
475
476 typedef struct _LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL {
477 LSAPR_TRUSTED_DOMAIN_AUTH_BLOB AuthBlob;
478 } LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL, *PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL;
479
480 typedef struct _LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION {
481 LSAPR_TRUSTED_DOMAIN_INFORMATION_EX Information;
482 TRUSTED_POSIX_OFFSET_INFO PosixOffset;
483 LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation;
484 } LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION, *PLSAPR_TRUSTED_DOMAIN_FULL_INFORMATION;
485
486 typedef struct _LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION_INTERNAL {
487 LSAPR_TRUSTED_DOMAIN_INFORMATION_EX Information;
488 TRUSTED_POSIX_OFFSET_INFO PosixOffset;
489 LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL AuthInformation;
490 } LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION_INTERNAL, *PLSAPR_TRUSTED_DOMAIN_FULL_INFORMATION_INTERNAL;
491
492 typedef struct _LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION2 {
493 LSAPR_TRUSTED_DOMAIN_INFORMATION_EX2 Information;
494 TRUSTED_POSIX_OFFSET_INFO PosixOffset;
495 LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation;
496 } LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION2, *PLSAPR_TRUSTED_DOMAIN_FULL_INFORMATION2;
497
498 typedef struct _TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES {
499 DWORD SupportedEncryptionTypes;
500 } TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES, *PTRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES;
501
502 typedef
503 [switch_type(TRUSTED_INFORMATION_CLASS)] union _LSAPR_TRUSTED_DOMAIN_INFO {
504 [case(TrustedDomainNameInformation)] LSAPR_TRUSTED_DOMAIN_NAME_INFO TrustedDomainNameInfo;
505 [case(TrustedControllersInformation)] LSAPR_TRUSTED_CONTROLLERS_INFO TrustedControllersInfo;
506 [case(TrustedPosixOffsetInformation)] TRUSTED_POSIX_OFFSET_INFO TrustedPosixOffsetInfo;
507 [case(TrustedPasswordInformation)] LSAPR_TRUSTED_PASSWORD_INFO TrustedPasswordInfo;
508 [case(TrustedDomainInformationBasic)] LSAPR_TRUSTED_DOMAIN_INFORMATION_BASIC TrustedDomainInfoBasic;
509 [case(TrustedDomainInformationEx)] LSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInfoEx;
510 [case(TrustedDomainAuthInformation)] LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION TrustedAuthInfo;
511 [case(TrustedDomainFullInformation)] LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION TrustedFullInfo;
512 [case(TrustedDomainAuthInformationInternal)] LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL TrustedAuthInfoInternal;
513 [case(TrustedDomainFullInformationInternal)] LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION_INTERNAL TrustedFullInfoInternal;
514 [case(TrustedDomainInformationEx2Internal)] LSAPR_TRUSTED_DOMAIN_INFORMATION_EX2 TrustedDomainInfoEx2;
515 [case(TrustedDomainFullInformation2Internal)] LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION2 TrustedFullInfo2;
516 [case(TrustedDomainSupportedEncryptionTypes)] TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES TrustedDomainSETs;
517 } LSAPR_TRUSTED_DOMAIN_INFO, *PLSAPR_TRUSTED_DOMAIN_INFO;
518
519 cpp_quote("#ifndef _WINNT_H");
520 typedef struct _LUID {
521 ULONG LowPart;
522 LONG HightPart;
523 } LUID, *PLUID;
524 cpp_quote("#endif");
525
526 typedef struct _LSAPR_LUID_AND_ATTRIBUTES {
527 LUID Luid;
528 DWORD Attributes;
529 } LSAPR_LUID_AND_ATTRIBUTES, *PLSAPR_LUID_AND_ATTRIBUTES;
530
531 typedef struct _LSAPR_PRIVILEGE_SET {
532 DWORD PrivilegeCount;
533 DWORD Control;
534 [size_is(PrivilegeCount)] LSAPR_LUID_AND_ATTRIBUTES Privilege[*];
535 } LSAPR_PRIVILEGE_SET, *PLSAPR_PRIVILEGE_SET;
536
537 cpp_quote("#ifndef _NTSECAPI_H");
538 typedef enum _LSA_FOREST_TRUST_RECORD_TYPE {
539 ForestTrustTopLevelName = 0,
540 ForestTrustTopLevelNameEx = 1,
541 ForestTrustDomainInfo = 2,
542 } LSA_FOREST_TRUST_RECORD_TYPE;
543
544 typedef struct _LSA_FOREST_TRUST_BINARY_DATA {
545 DWORD Length;
546 [size_is(Length)] BYTE *Buffer;
547 } LSA_FOREST_TRUST_BINARY_DATA, *PLSA_FOREST_TRUST_BINARY_DATA;
548
549 typedef struct _LSA_FOREST_TRUST_DOMAIN_INFO {
550 PRPC_SID Sid;
551 LSA_UNICODE_STRING DnsName;
552 LSA_UNICODE_STRING NetbiosName;
553 } LSA_FOREST_TRUST_DOMAIN_INFO, *PLSA_FOREST_TRUST_DOMAIN_INFO;
554
555 typedef struct _LSA_FOREST_TRUST_RECORD {
556 DWORD Flags;
557 LSA_FOREST_TRUST_RECORD_TYPE ForestTrustType;
558 LARGE_INTEGER Time;
559 [switch_type(LSA_FOREST_TRUST_RECORD_TYPE), switch_is(ForestTrustType)] union {
560 [case(ForestTrustTopLevelName, ForestTrustTopLevelNameEx)] LSA_UNICODE_STRING TopLevelName;
561 [case(ForestTrustDomainInfo)] LSA_FOREST_TRUST_DOMAIN_INFO DomainInfo;
562 [default] LSA_FOREST_TRUST_BINARY_DATA Data;
563 } ForestTrustData;
564 } LSA_FOREST_TRUST_RECORD, *PLSA_FOREST_TRUST_RECORD;
565
566 typedef struct _LSA_FOREST_TRUST_INFORMATION {
567 DWORD RecordCount;
568 [size_is(RecordCount)] PLSA_FOREST_TRUST_RECORD *Entries;
569 } LSA_FOREST_TRUST_INFORMATION, *PLSA_FOREST_TRUST_INFORMATION;
570
571 typedef enum _LSA_FOREST_TRUST_COLLISION_RECORD_TYPE {
572 CollisionTdo = 0,
573 CollisionXref,
574 CollisionOther,
575 } LSA_FOREST_TRUST_COLLISION_RECORD_TYPE;
576
577 typedef struct _LSA_FOREST_TRUST_COLLISION_RECORD {
578 DWORD Index;
579 LSA_FOREST_TRUST_COLLISION_RECORD_TYPE Type;
580 DWORD Flags;
581 LSA_UNICODE_STRING Name;
582 } LSA_FOREST_TRUST_COLLISION_RECORD, *PLSA_FOREST_TRUST_COLLISION_RECORD;
583
584 typedef struct _LSA_FOREST_TRUST_COLLISION_INFORMATION {
585 DWORD RecordCount;
586 [size_is(RecordCount)] PLSA_FOREST_TRUST_COLLISION_RECORD *Entries;
587 } LSA_FOREST_TRUST_COLLISION_INFORMATION, *PLSA_FOREST_TRUST_COLLISION_INFORMATION;
588 cpp_quote("#endif");
589
590 [
591 uuid(12345778-1234-abcd-ef00-0123456789ab),
592 version(0.0),
593 pointer_default(unique)
594 #ifndef __midl
595 ,explicit_handle
596 #endif
597 ]
598 interface lsarpc
599 {
600 /* Function 0 */
601 NTSTATUS LsarClose(
602 [in] handle_t hBinding,
603 [in, out] LSAPR_HANDLE *ObjectHandle);
604
605 /* Function 1 */
606 NTSTATUS LsarDelete(
607 [in] handle_t hBinding,
608 [in] LSAPR_HANDLE ObjectHandle);
609
610 /* Function 2 */
611 NTSTATUS LsarEnumeratePrivileges(
612 [in] handle_t hBinding,
613 [in] LSAPR_HANDLE PolicyHandle,
614 [in, out] DWORD *EnumerationContext,
615 [out] PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer,
616 [in] DWORD PreferedMaximumLength);
617
618 /* Function 3 */
619 NTSTATUS LsarQuerySecurityObject(
620 [in] handle_t hBinding,
621 [in] LSAPR_HANDLE ObjectHandle,
622 [in] SECURITY_INFORMATION SecurityInformation,
623 [out] PLSAPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor);
624
625 /* Function 4 */
626 NTSTATUS LsarSetSecurityObject(
627 [in] handle_t hBinding,
628 [in] LSAPR_HANDLE ObjectHandle,
629 [in] SECURITY_INFORMATION SecurityInformation,
630 [in] PLSAPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor);
631
632 /* Function 5 */
633 NTSTATUS LsarChangePassword(
634 [in] handle_t hBinding,
635 [in] PRPC_UNICODE_STRING String1,
636 [in] PRPC_UNICODE_STRING String2,
637 [in] PRPC_UNICODE_STRING String3,
638 [in] PRPC_UNICODE_STRING String4,
639 [in] PRPC_UNICODE_STRING String5);
640
641 /* Function 6 */
642 NTSTATUS LsarOpenPolicy(
643 [in] handle_t hBinding,
644 [in, unique] LPWSTR SystemName,
645 [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes,
646 [in] ACCESS_MASK DesiredAccess,
647 [out] LSAPR_HANDLE *PolicyHandle);
648
649 /* Function 7 */
650 NTSTATUS LsarQueryInformationPolicy(
651 [in] handle_t hBinding,
652 [in] LSAPR_HANDLE PolicyHandle,
653 [in] POLICY_INFORMATION_CLASS InformationClass,
654 [in] unsigned long PolicyInformation);
655 /* FIXME: should be [in, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION PolicyInformation); */
656
657 /* Function 8 */
658 NTSTATUS LsarSetInformationPolicy(
659 [in] handle_t hBinding,
660 [in] LSAPR_HANDLE PolicyHandle,
661 [in] POLICY_INFORMATION_CLASS InformationClass,
662 [out] unsigned long *PolicyInformation);
663 /* FIXME: should be [out, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION *PolicyInformation); */
664
665 /* Function 9 */
666 NTSTATUS LsarClearAuditLog(
667 [in] handle_t hBinding,
668 [in] LSAPR_HANDLE ObjectHandle);
669
670 /* Function 10 */
671 NTSTATUS LsarCreateAccount(
672 [in] handle_t hBinding,
673 [in] PRPC_SID AccountSid,
674 [in] ACCESS_MASK DesiredAccess,
675 [out] LSAPR_HANDLE *AccountHandle);
676
677 /* Function 11 */
678 NTSTATUS LsarEnumerateAccounts(
679 [in] handle_t hBinding,
680 [in] LSAPR_HANDLE PolicyHandle,
681 [in, out] DWORD *EnumerationContext,
682 [out] PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer,
683 [in] DWORD PreferedMaximumLength);
684
685 /* Function 12 */
686 NTSTATUS LsarCreateTrustedDomain(
687 [in] handle_t hBinding,
688 [in] LSAPR_HANDLE PolicyHandle,
689 [in] PLSAPR_TRUST_INFORMATION TrustedDomainInformation,
690 [in] ACCESS_MASK DesiredAccess,
691 [out] LSAPR_HANDLE *TrustedDomainHandle);
692
693 /* Function 13 */
694 NTSTATUS LsarEnumerateTrustedDomains(
695 [in] handle_t hBinding,
696 [in] LSAPR_HANDLE PolicyHandle,
697 [in, out] DWORD *EnumerationContext,
698 [out] PLSAPR_TRUSTED_ENUM_BUFFER EnumerationBuffer,
699 [in] DWORD PreferedMaximumLength);
700
701 /* Function 14 */
702 NTSTATUS LsarLookupNames(
703 [in] handle_t hBinding,
704 [in] LSAPR_HANDLE PolicyHandle,
705 [in] DWORD Count,
706 [in, size_is(Count)] PRPC_UNICODE_STRING Names,
707 [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
708 [in, out] PLSAPR_TRANSLATED_SIDS TranslatedSids,
709 [in] LSAP_LOOKUP_LEVEL LookupLevel,
710 [in, out] DWORD *MappedCount);
711
712 /* Function 15 */
713 NTSTATUS LsarLookupSids(
714 [in] handle_t hBinding,
715 [in] LSAPR_HANDLE PolicyHandle,
716 [in] PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
717 [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
718 [in, out] PLSAPR_TRANSLATED_NAMES TranslatedNames,
719 [in] LSAP_LOOKUP_LEVEL LookupLevel,
720 [in, out] DWORD *MappedCount);
721
722 /* Function 16 */
723 NTSTATUS LsarCreateSecret(
724 [in] handle_t hBinding,
725 [in] LSAPR_HANDLE PolicyHandle,
726 [in] PRPC_UNICODE_STRING SecretName,
727 [in] ACCESS_MASK DesiredAccess,
728 [out] LSAPR_HANDLE *SecretHandle);
729
730 /* Function 17 */
731 NTSTATUS LsarOpenAccount(
732 [in] handle_t hBinding,
733 [in] LSAPR_HANDLE PolicyHandle,
734 [in] PRPC_SID AccountSid,
735 [in] ACCESS_MASK DesiredAccess,
736 [out] LSAPR_HANDLE *AccountHandle);
737
738 /* Function 18 */
739 NTSTATUS LsarEnumeratePrivilegesAccount(
740 [in] handle_t hBinding,
741 [in] LSAPR_HANDLE AccountHandle,
742 [out] PLSAPR_PRIVILEGE_SET *Privileges);
743
744 /* Function 19 */
745 NTSTATUS LsarAddPrivilegesToAccount(
746 [in] handle_t hBinding,
747 [in] LSAPR_HANDLE AccountHandle,
748 [in] PLSAPR_PRIVILEGE_SET Privileges);
749
750 /* Function 20 */
751 NTSTATUS LsarRemovePrivilegesFromAccount(
752 [in] handle_t hBinding,
753 [in] LSAPR_HANDLE AccountHandle,
754 [in] BOOL AllPrivileges,
755 [in, unique] PLSAPR_PRIVILEGE_SET Privileges);
756
757 /* Function 21 */
758 NTSTATUS LsarGetQuotasForAccount(
759 [in] handle_t hBinding,
760 [in] LSAPR_HANDLE AccountHandle,
761 [out] PQUOTA_LIMITS QuotaLimits);
762
763 /* Function 22 */
764 NTSTATUS LsarSetQuotasForAccount(
765 [in] handle_t hBinding,
766 [in] LSAPR_HANDLE AccountHandle,
767 [in] PQUOTA_LIMITS QuotaLimits);
768
769 /* Function 23 */
770 NTSTATUS LsarGetSystemAccessAccount(
771 [in] handle_t hBinding,
772 [in] LSAPR_HANDLE AccountHandle,
773 [out] ACCESS_MASK *SystemAccess);
774
775 /* Function 24 */
776 NTSTATUS LsarSetSystemAccessAccount(
777 [in] handle_t hBinding,
778 [in] LSAPR_HANDLE AccountHandle,
779 [in] ACCESS_MASK SystemAccess);
780
781 /* Function 25 */
782 NTSTATUS LsarOpenTrustedDomain(
783 [in] handle_t hBinding,
784 [in] LSAPR_HANDLE PolicyHandle,
785 [in] PRPC_SID TrustedDomainSid,
786 [in] ACCESS_MASK DesiredAccess,
787 [out] LSAPR_HANDLE *TrustedDomainHandle);
788
789 /* Function 26 */
790 NTSTATUS LsarQueryInfoTrustedDomain(
791 [in] handle_t hBinding,
792 [in] LSAPR_HANDLE TrustedDomainHandle,
793 [in] TRUSTED_INFORMATION_CLASS InformationClass,
794 [out, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO *TrustedDomainInformation);
795
796 /* Function 27 */
797 NTSTATUS LsarSetInformationTrustedDomain(
798 [in] handle_t hBinding,
799 [in] LSAPR_HANDLE TrustedDomainHandle,
800 [in] TRUSTED_INFORMATION_CLASS InformationClass,
801 [in, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation);
802
803 /* Function 28 */
804 NTSTATUS LsarOpenSecret(
805 [in] handle_t hBinding,
806 [in] LSAPR_HANDLE PolicyHandle,
807 [in] PRPC_UNICODE_STRING SecretName,
808 [in] ACCESS_MASK DesiredAccess,
809 [out] LSAPR_HANDLE *SecretHandle);
810
811 /* Function 29 */
812 NTSTATUS LsarSetSecret(
813 [in] handle_t hBinding,
814 [in] LSAPR_HANDLE *SecretHandle,
815 [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedCurrentValue,
816 [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedOldValue);
817
818 /* Function 30 */
819 NTSTATUS LsarQuerySecret(
820 [in] handle_t hBinding,
821 [in] LSAPR_HANDLE SecretHandle,
822 [in, out, unique] PLSAPR_CR_CIPHER_VALUE *EncryptedCurrentValue,
823 [in, out, unique] PLARGE_INTEGER CurrentValueSetTime,
824 [in, out, unique] PLSAPR_CR_CIPHER_VALUE *EncryptedOldValue,
825 [in, out, unique] PLARGE_INTEGER OldValueSetTime);
826
827 /* Function 31 */
828 NTSTATUS LsarLookupPrivilegeValue(
829 [in] handle_t hBinding,
830 [in] LSAPR_HANDLE PolicyHandle,
831 [in] PRPC_UNICODE_STRING Name,
832 [out] PLUID Value);
833
834 /* Function 32 */
835 NTSTATUS LsarLookupPrivilegeName(
836 [in] handle_t hBinding,
837 [in] LSAPR_HANDLE PolicyHandle,
838 [in] PLUID Value,
839 [out] PRPC_UNICODE_STRING *Name);
840
841 /* Function 33 */
842 NTSTATUS LsarLookupPrivilegeDisplayName(
843 [in] handle_t hBinding,
844 /*[in] LSAPR_HANDLE PolicyHandle,
845 [in] PRPC_UNICODE_STRING Name,
846 [in] USHORT ClientLanguage,
847 [in] USHORT ClientSystemDefaultLanguage,
848 [out] PRPC_UNICODE_STRING *DisplayName,*/
849 [out] USHORT *LanguageReturned);
850
851 /* Function 34 */
852 NTSTATUS LsarDeleteObject(
853 [in] handle_t hBinding,
854 [in, out] LSAPR_HANDLE *ObjectHandle);
855
856 cpp_quote("#if _WIN32_WINNT >= 0x0351")
857
858 /* Function 35 */
859 NTSTATUS LsarEnumerateAccountsWithUserRight(
860 [in] handle_t hBinding,
861 [in] LSAPR_HANDLE PolicyHandle,
862 [in, unique] PRPC_UNICODE_STRING UserRight,
863 [out] PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer);
864
865 /* Function 36 */
866 NTSTATUS LsarEnmuerateAccountRights(
867 [in] handle_t hBinding,
868 [in] LSAPR_HANDLE PolicyHandle,
869 [in] PRPC_SID AccountSid,
870 [out] PLSAPR_USER_RIGHT_SET UserRights);
871
872 /* Function 37 */
873 NTSTATUS LsarAddAccountRights(
874 [in] handle_t hBinding,
875 [in] LSAPR_HANDLE PolicyHandle,
876 [in] PRPC_SID AccountSid,
877 [in] PLSAPR_USER_RIGHT_SET UserRights);
878
879 /* Function 38 */
880 NTSTATUS LsarRemoveAccountRights(
881 [in] handle_t hBinding,
882 [in] LSAPR_HANDLE PolicyHandle,
883 [in] PRPC_SID AccountSid,
884 [in] BOOL AllRights,
885 [in] PLSAPR_USER_RIGHT_SET UserRights);
886
887 /* Function 39 */
888 NTSTATUS LsarQueryTrustedDomainInfo(
889 [in] handle_t hBinding,
890 [in] LSAPR_HANDLE PolicyHandle,
891 [in] PRPC_SID TrustedDomainSid,
892 [in] TRUSTED_INFORMATION_CLASS InformationClass,
893 [out, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO *TrustedDomainInformation);
894
895 /* Function 40 */
896 NTSTATUS LsarSetTrustedDomainInfo(
897 [in] handle_t hBinding,
898 [in] LSAPR_HANDLE PolicyHandle,
899 [in] PRPC_SID TrustedDomainSid,
900 [in] TRUSTED_INFORMATION_CLASS InformationClass,
901 [in, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation);
902
903 /* Function 41 */
904 NTSTATUS LsarDeleteTrustedDomain(
905 [in] handle_t hBinding,
906 [in] LSAPR_HANDLE PolicyHandle,
907 [in] PRPC_SID TrustedDomainSid);
908
909 /* Function 42 */
910 NTSTATUS LsarStorePrivateData(
911 [in] handle_t hBinding,
912 [in] LSAPR_HANDLE PolicyHandle,
913 [in] PRPC_UNICODE_STRING KeyName,
914 [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedData);
915
916 /* Function 43 */
917 NTSTATUS LsarRetrievePrivateData(
918 [in] handle_t hBinding,
919 [in] LSAPR_HANDLE PolicyHandle,
920 [in] PRPC_UNICODE_STRING KeyName,
921 [in, out] PLSAPR_CR_CIPHER_VALUE *EncryptedData);
922
923 /* Function 44 */
924 NTSTATUS LsarOpenPolicy2(
925 [in] handle_t hBinding,
926 [in, unique, string] LPWSTR SystemName,
927 [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes,
928 [in] ACCESS_MASK DesiredAccess,
929 [out] LSAPR_HANDLE *PolicyHandle);
930
931 /* Function 45 */
932 NTSTATUS LsarGetUserName(
933 [in] handle_t hBinding,
934 [in, unique, string] LPWSTR SystemName,
935 [in, out] PRPC_UNICODE_STRING *UserName,
936 [in, out, unique] PRPC_UNICODE_STRING *DomainName);
937
938 cpp_quote("#if _WIN32_WINNT >= 0x0500")
939
940 /* Function 46 */
941 NTSTATUS LsarQueryInformationPolicy2(
942 [in] handle_t hBinding,
943 [in] LSAPR_HANDLE PolicyHandle,
944 [in] POLICY_INFORMATION_CLASS InformationClass,
945 [out] unsigned long *PolicyInformation);
946 /* FIXME: should be [out, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION *PolicyInformation); */
947
948 /* Function 47 */
949 NTSTATUS LsarSetInformationPolicy2(
950 [in] handle_t hBinding,
951 [in] LSAPR_HANDLE PolicyHandle,
952 [in] POLICY_INFORMATION_CLASS InformationClass,
953 [in] unsigned long PolicyInformation);
954 /* FIXME: should be [in, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION PolicyInformation); */
955
956 /* Function 48 */
957 NTSTATUS LsarQueryTrustedDomainInfoByName(
958 [in] handle_t hBinding,
959 [in] LSAPR_HANDLE PolicyHandle,
960 [in] PRPC_UNICODE_STRING TrustedDomainName,
961 [in] POLICY_INFORMATION_CLASS InformationClass,
962 [out] unsigned long *PolicyInformation);
963 /* FIXME: should be [out, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION *PolicyInformation); */
964
965 /* Function 49 */
966 NTSTATUS LsarSetTrustedDomainInfoByName(
967 [in] handle_t hBinding,
968 [in] LSAPR_HANDLE PolicyHandle,
969 [in] PRPC_UNICODE_STRING TrustedDomainName,
970 [in] POLICY_INFORMATION_CLASS InformationClass,
971 [in] unsigned long PolicyInformation);
972 /* FIXME: should be [in, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION PolicyInformation); */
973
974 /* Function 50 */
975 NTSTATUS LsarEnumerateTrustedDomainsEx(
976 [in] handle_t hBinding,
977 [in] LSAPR_HANDLE PolicyHandle,
978 [in, out] DWORD *EnumerationContext,
979 [out] PLSAPR_TRUSTED_ENUM_BUFFER_EX EnumerationBuffer,
980 [in] DWORD PreferedMaximumLength);
981
982 /* Function 51 */
983 NTSTATUS LsarCreateTrustedDomainEx(
984 [in] handle_t hBinding,
985 [in] LSAPR_HANDLE PolicyHandle,
986 [in] PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
987 [in] PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthentificationInformation,
988 [in] ACCESS_MASK DesiredAccess,
989 [out] LSAPR_HANDLE *TrustedDomainHandle);
990
991 /* Function 52 */
992 NTSTATUS LsarSetPolicyReplicationHandle(
993 [in] handle_t hBinding,
994 [in, out] PLSAPR_HANDLE PolicyHandle);
995
996 /* Function 53 */
997 NTSTATUS LsarQueryDomainInformationPolicy(
998 [in] handle_t hBinding,
999 [in] LSAPR_HANDLE PolicyHandle,
1000 [in] POLICY_INFORMATION_CLASS InformationClass,
1001 [out] unsigned long *PolicyInformation);
1002 /* FIXME: should be [out, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION *PolicyInformation); */
1003
1004 /* Function 54 */
1005 NTSTATUS LsarSetDomainInformationPolicy(
1006 [in] handle_t hBinding,
1007 [in] LSAPR_HANDLE PolicyHandle,
1008 [in] POLICY_INFORMATION_CLASS InformationClass,
1009 [in] unsigned long PolicyInformation);
1010 /* FIXME: should be [in, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION PolicyInformation); */
1011
1012 /* Function 55 */
1013 NTSTATUS LsarOpenTrustedDomainByName(
1014 [in] handle_t hBinding,
1015 [in] LSAPR_HANDLE PolicyHandle,
1016 [in] PRPC_UNICODE_STRING TrustedDomainName,
1017 [in] ACCESS_MASK DesiredAccess,
1018 [out] LSAPR_HANDLE *TrustedDomainHandle);
1019
1020 /* Function 56 */
1021 NTSTATUS LsarTestCall(
1022 [in] handle_t hBinding); /* FIXME */
1023
1024 /* Function 57 */
1025 NTSTATUS LsarLookupSids2(
1026 [in] handle_t hBinding,
1027 [in] LSAPR_HANDLE PolicyHandle,
1028 [in] PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
1029 [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
1030 [in, out] PLSAPR_TRANSLATED_NAMES_EX TranslatedNames,
1031 [in] LSAP_LOOKUP_LEVEL LookupLevel,
1032 [in, out] DWORD *MappedCount,
1033 [in] DWORD LookupOptions,
1034 [in] DWORD ClientRevision);
1035
1036 /* Function 58 */
1037 NTSTATUS LsarLookupNames2(
1038 [in] handle_t hBinding,
1039 [in] LSAPR_HANDLE PolicyHandle,
1040 [in] DWORD Count,
1041 [in, size_is(Count)] PRPC_UNICODE_STRING Names,
1042 [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
1043 [in, out] PLSAPR_TRANSLATED_SID_EX TranslatedSids,
1044 [in] LSAP_LOOKUP_LEVEL LookupLevel,
1045 [in, out] DWORD *MappedCount,
1046 [in] DWORD LookupOptions,
1047 [in] DWORD ClientRevision);
1048
1049 /* Function 59 */
1050 NTSTATUS LsarCreateTrustedDomainEx2(
1051 [in] handle_t hBinding,
1052 [in] LSAPR_HANDLE PolicyHandle,
1053 [in] PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
1054 [in] PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL AuthentificationInformation,
1055 [in] ACCESS_MASK DesiredAccess,
1056 [out] LSAPR_HANDLE *TrustedDomainHandle);
1057
1058 cpp_quote("#if _WIN32_WINNT >= 0x0501")
1059
1060 /* Function 60 */
1061 NTSTATUS CredrWrite(
1062 [in] handle_t hBinding); /* FIXME */
1063
1064 /* Function 61 */
1065 NTSTATUS CredrRead(
1066 [in] handle_t hBinding); /* FIXME */
1067
1068 /* Function 62 */
1069 NTSTATUS CredrEnumerate(
1070 [in] handle_t hBinding); /* FIXME */
1071
1072 /* Function 63 */
1073 NTSTATUS CredrWriteDomainCredentials(
1074 [in] handle_t hBinding); /* FIXME */
1075
1076 /* Function 64 */
1077 NTSTATUS CredrReadDomainCredentials(
1078 [in] handle_t hBinding); /* FIXME */
1079
1080 /* Function 65 */
1081 NTSTATUS CredrDelete(
1082 [in] handle_t hBinding); /* FIXME */
1083
1084 /* Function 66 */
1085 NTSTATUS CredrGetTargetInfo(
1086 [in] handle_t hBinding); /* FIXME */
1087
1088 /* Function 67 */
1089 NTSTATUS CredrProfileLoaded(
1090 [in] handle_t hBinding); /* FIXME */
1091
1092 /* Function 68 */
1093 NTSTATUS LsarLookupNames3(
1094 [in] handle_t hBinding,
1095 [in] LSAPR_HANDLE PolicyHandle,
1096 [in] DWORD Count,
1097 [in, size_is(Count)] PRPC_UNICODE_STRING Names,
1098 [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
1099 [in, out] PLSAPR_TRANSLATED_SID_EX2 TranslatedSids,
1100 [in] LSAP_LOOKUP_LEVEL LookupLevel,
1101 [in, out] DWORD *MappedCount,
1102 [in] DWORD LookupOptions,
1103 [in] DWORD ClientRevision);
1104
1105 /* Function 69 */
1106 NTSTATUS CredrGetSessionTypes(
1107 [in] handle_t hBinding); /* FIXME */
1108
1109 /* Function 70 */
1110 NTSTATUS LsarRegisterAuditEvent(
1111 [in] handle_t hBinding); /* FIXME */
1112
1113 /* Function 71 */
1114 NTSTATUS LsarGenAuditEvent(
1115 [in] handle_t hBinding); /* FIXME */
1116
1117 /* Function 72 */
1118 NTSTATUS LsarUnregisterAuditEvent(
1119 [in] handle_t hBinding); /* FIXME */
1120
1121 /* Function 73 */
1122 NTSTATUS LsarQueryForestTrustInformation(
1123 [in] handle_t hBinding,
1124 [in] LSAPR_HANDLE PolicyHandle,
1125 [in] PLSA_UNICODE_STRING TrustedDomainName,
1126 [in] LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType,
1127 [out] PLSA_FOREST_TRUST_INFORMATION *ForestTrustInfo);
1128
1129 /* Function 74 */
1130 NTSTATUS LsarSetForestTrustInformation(
1131 [in] handle_t hBinding,
1132 [in] LSAPR_HANDLE PolicyHandle,
1133 [in] PLSA_UNICODE_STRING TrustedDomainName,
1134 [in] LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType,
1135 [in] PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo,
1136 [in] BOOL CheckOnly,
1137 [out] PLSA_FOREST_TRUST_COLLISION_INFORMATION *CollisionInfo);
1138
1139 /* Function 75 */
1140 NTSTATUS CredrRename(
1141 [in] handle_t hBinding); /* FIXME */
1142
1143 /* Function 76 */
1144 NTSTATUS LsarLookupSids3(
1145 [in] handle_t hBinding,
1146 [in] PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
1147 [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
1148 [in, out] PLSAPR_TRANSLATED_NAMES_EX TranslatedNames,
1149 [in] LSAP_LOOKUP_LEVEL LookupLevel,
1150 [in, out] DWORD *MappedCount,
1151 [in] DWORD LookupOptions,
1152 [in] DWORD ClientRevision);
1153
1154 /* Function 77 */
1155 NTSTATUS LsarLookupNames4(
1156 [in] handle_t hBinding,
1157 [in] handle_t RpcHandle,
1158 [in] DWORD Count,
1159 [in, size_is(Count)] PRPC_UNICODE_STRING Names,
1160 [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
1161 [in, out] PLSAPR_TRANSLATED_SID_EX2 TranslatedSids,
1162 [in] LSAP_LOOKUP_LEVEL LookupLevel,
1163 [in, out] DWORD *MappedCount,
1164 [in] DWORD LookupOptions,
1165 [in] DWORD ClientRevision);
1166
1167 /* Function 78 */
1168 NTSTATUS LsarOpenPolicySce(
1169 [in] handle_t hBinding); /* FIXME */
1170
1171 /* Function 79 */
1172 NTSTATUS LsarAdtRegisterSecurityEventSource(
1173 [in] handle_t hBinding); /* FIXME */
1174
1175 /* Function 80 */
1176 NTSTATUS LsarAdtUnregisterSecurityEventSource(
1177 [in] handle_t hBinding); /* FIXME */
1178
1179 /* Function 81 */
1180 NTSTATUS LsarAdtReportSecurityEvent(
1181 [in] handle_t hBinding); /* FIXME */
1182
1183 cpp_quote("#endif /* _WIN32_WINNT >= 0x0501 */")
1184 cpp_quote("#endif /* _WIN32_WINNT >= 0x0500 */")
1185 cpp_quote("#endif /* _WIN32_WINNT >= 0x0351 */")
1186
1187 }