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