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