2 * Copyright (C) 1999 Juergen Schmied
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 #include_next <ntsecapi.h>
23 #ifndef __WINE_NTSECAPI_H
24 #define __WINE_NTSECAPI_H
28 #endif /* defined(__cplusplus) */
30 typedef enum _SECURITY_LOGON_TYPE
{
41 CachedRemoteInteractive
,
43 } SECURITY_LOGON_TYPE
, *PSECURITY_LOGON_TYPE
;
45 typedef enum _POLICY_NOTIFICATION_INFORMATION_CLASS
{
47 PolicyNotifyAuditEventsInformation
= 1,
48 PolicyNotifyAccountDomainInformation
,
49 PolicyNotifyServerRoleInformation
,
50 PolicyNotifyDnsDomainInformation
,
51 PolicyNotifyDomainEfsInformation
,
52 PolicyNotifyDomainKerberosTicketInformation
,
53 PolicyNotifyMachineAccountPasswordInformation
55 } POLICY_NOTIFICATION_INFORMATION_CLASS
, *PPOLICY_NOTIFICATION_INFORMATION_CLASS
;
57 typedef ULONG LSA_OPERATIONAL_MODE
, *PLSA_OPERATIONAL_MODE
;
59 /* Policy access rights */
60 #define POLICY_VIEW_LOCAL_INFORMATION 0x00000001L
61 #define POLICY_VIEW_AUDIT_INFORMATION 0x00000002L
62 #define POLICY_GET_PRIVATE_INFORMATION 0x00000004L
63 #define POLICY_TRUST_ADMIN 0x00000008L
64 #define POLICY_CREATE_ACCOUNT 0x00000010L
65 #define POLICY_CREATE_SECRET 0x00000020L
66 #define POLICY_CREATE_PRIVILEGE 0x00000040L
67 #define POLICY_SET_DEFAULT_QUOTA_LIMITS 0x00000080L
68 #define POLICY_SET_AUDIT_REQUIREMENTS 0x00000100L
69 #define POLICY_AUDIT_LOG_ADMIN 0x00000200L
70 #define POLICY_SERVER_ADMIN 0x00000400L
71 #define POLICY_LOOKUP_NAMES 0x00000800L
72 #define POLICY_NOTIFICATION 0x00001000L
74 #define POLICY_ALL_ACCESS ( \
75 STANDARD_RIGHTS_REQUIRED | \
76 POLICY_VIEW_LOCAL_INFORMATION | \
77 POLICY_VIEW_AUDIT_INFORMATION | \
78 POLICY_GET_PRIVATE_INFORMATION | \
79 POLICY_TRUST_ADMIN | \
80 POLICY_CREATE_ACCOUNT | \
81 POLICY_CREATE_SECRET | \
82 POLICY_CREATE_PRIVILEGE | \
83 POLICY_SET_DEFAULT_QUOTA_LIMITS | \
84 POLICY_SET_AUDIT_REQUIREMENTS | \
85 POLICY_AUDIT_LOG_ADMIN | \
86 POLICY_SERVER_ADMIN | \
90 #define POLICY_READ ( \
91 STANDARD_RIGHTS_READ | \
92 POLICY_VIEW_AUDIT_INFORMATION | \
93 POLICY_GET_PRIVATE_INFORMATION)
95 #define POLICY_WRITE ( \
96 STANDARD_RIGHTS_WRITE | \
97 POLICY_TRUST_ADMIN | \
98 POLICY_CREATE_ACCOUNT | \
99 POLICY_CREATE_SECRET | \
100 POLICY_CREATE_PRIVILEGE | \
101 POLICY_SET_DEFAULT_QUOTA_LIMITS | \
102 POLICY_SET_AUDIT_REQUIREMENTS | \
103 POLICY_AUDIT_LOG_ADMIN | \
106 #define POLICY_EXECUTE ( \
107 STANDARD_RIGHTS_EXECUTE | \
108 POLICY_VIEW_LOCAL_INFORMATION | \
111 typedef UNICODE_STRING LSA_UNICODE_STRING
, *PLSA_UNICODE_STRING
;
112 /* FIXME: Microsoft declares an LSA_STRING as ascii but changing this breaks secur32.dll so someone will need to figure out what to do here */
113 typedef struct _LSA_STRING
116 USHORT MaximumLength
;
118 } LSA_STRING
, *PLSA_STRING
;
119 typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES
, *PLSA_OBJECT_ATTRIBUTES
;
121 typedef PVOID LSA_HANDLE
, *PLSA_HANDLE
;
125 PolicyAuditLogInformation
= 1,
126 PolicyAuditEventsInformation
,
127 PolicyPrimaryDomainInformation
,
128 PolicyPdAccountInformation
,
129 PolicyAccountDomainInformation
,
130 PolicyLsaServerRoleInformation
,
131 PolicyReplicaSourceInformation
,
132 PolicyDefaultQuotaInformation
,
133 PolicyModificationInformation
,
134 PolicyAuditFullSetInformation
,
135 PolicyAuditFullQueryInformation
,
136 PolicyDnsDomainInformation
137 } POLICY_INFORMATION_CLASS
, *PPOLICY_INFORMATION_CLASS
;
139 typedef ULONG POLICY_AUDIT_EVENT_OPTIONS
, *PPOLICY_AUDIT_EVENT_OPTIONS
;
141 typedef struct _POLICY_AUDIT_EVENTS_INFO
143 WINBOOL AuditingMode
;
144 PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions
;
145 ULONG MaximumAuditEventCount
;
146 } POLICY_AUDIT_EVENTS_INFO
, *PPOLICY_AUDIT_EVENTS_INFO
;
148 typedef struct _LSA_FOREST_TRUST_DOMAIN_INFO
{
151 LSA_UNICODE_STRING DnsName
;
152 LSA_UNICODE_STRING NetbiosName
;
154 } LSA_FOREST_TRUST_DOMAIN_INFO
, *PLSA_FOREST_TRUST_DOMAIN_INFO
;
157 #define MAX_FOREST_TRUST_BINARY_DATA_SIZE ( 128 * 1024 )
159 typedef struct _LSA_FOREST_TRUST_BINARY_DATA
{
164 } LSA_FOREST_TRUST_BINARY_DATA
, *PLSA_FOREST_TRUST_BINARY_DATA
;
168 ForestTrustTopLevelName
,
169 ForestTrustTopLevelNameEx
,
170 ForestTrustDomainInfo
,
171 ForestTrustRecordTypeLast
= ForestTrustDomainInfo
173 } LSA_FOREST_TRUST_RECORD_TYPE
;
175 typedef struct _LSA_AUTH_INFORMATION
{
177 LARGE_INTEGER LastUpdateTime
;
179 ULONG AuthInfoLength
;
181 } LSA_AUTH_INFORMATION
, *PLSA_AUTH_INFORMATION
;
183 typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION
{
185 ULONG IncomingAuthInfos
;
186 PLSA_AUTH_INFORMATION IncomingAuthenticationInformation
;
187 PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation
;
188 ULONG OutgoingAuthInfos
;
189 PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation
;
190 PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation
;
192 } TRUSTED_DOMAIN_AUTH_INFORMATION
, *PTRUSTED_DOMAIN_AUTH_INFORMATION
;
194 typedef struct _LSA_FOREST_TRUST_RECORD
{
197 LSA_FOREST_TRUST_RECORD_TYPE ForestTrustType
;
203 LSA_UNICODE_STRING TopLevelName
;
204 LSA_FOREST_TRUST_DOMAIN_INFO DomainInfo
;
205 LSA_FOREST_TRUST_BINARY_DATA Data
;
208 } LSA_FOREST_TRUST_RECORD
, *PLSA_FOREST_TRUST_RECORD
;
210 typedef struct _LSA_TRANSLATED_SID
{
216 } LSA_TRANSLATED_SID
, *PLSA_TRANSLATED_SID
;
218 typedef struct _LSA_TRANSLATED_SID2
{
225 } LSA_TRANSLATED_SID2
, *PLSA_TRANSLATED_SID2
;
227 typedef struct _LSA_TRANSLATED_NAME
{
230 LSA_UNICODE_STRING Name
;
233 } LSA_TRANSLATED_NAME
, *PLSA_TRANSLATED_NAME
;
241 } LSA_FOREST_TRUST_COLLISION_RECORD_TYPE
;
243 typedef struct _LSA_FOREST_TRUST_COLLISION_RECORD
{
246 LSA_FOREST_TRUST_COLLISION_RECORD_TYPE Type
;
248 LSA_UNICODE_STRING Name
;
250 } LSA_FOREST_TRUST_COLLISION_RECORD
, *PLSA_FOREST_TRUST_COLLISION_RECORD
;
252 typedef struct _LSA_FOREST_TRUST_COLLISION_INFORMATION
{
255 PLSA_FOREST_TRUST_COLLISION_RECORD
* Entries
;
257 } LSA_FOREST_TRUST_COLLISION_INFORMATION
, *PLSA_FOREST_TRUST_COLLISION_INFORMATION
;
259 typedef struct _TRUSTED_DOMAIN_INFORMATION_EX
{
261 LSA_UNICODE_STRING Name
;
262 LSA_UNICODE_STRING FlatName
;
264 ULONG TrustDirection
;
266 ULONG TrustAttributes
;
268 } TRUSTED_DOMAIN_INFORMATION_EX
, *PTRUSTED_DOMAIN_INFORMATION_EX
;
270 typedef ULONG LSA_ENUMERATION_HANDLE
, *PLSA_ENUMERATION_HANDLE
;
272 typedef struct _LSA_TRUST_INFORMATION
{
274 LSA_UNICODE_STRING Name
;
277 } LSA_TRUST_INFORMATION
, *PLSA_TRUST_INFORMATION
;
279 typedef struct _LSA_REFERENCED_DOMAIN_LIST
{
282 PLSA_TRUST_INFORMATION Domains
;
284 } LSA_REFERENCED_DOMAIN_LIST
, *PLSA_REFERENCED_DOMAIN_LIST
;
286 typedef enum _POLICY_DOMAIN_INFORMATION_CLASS
{
288 PolicyDomainEfsInformation
= 2,
289 PolicyDomainKerberosTicketInformation
291 } POLICY_DOMAIN_INFORMATION_CLASS
, *PPOLICY_DOMAIN_INFORMATION_CLASS
;
293 typedef struct _POLICY_PRIMARY_DOMAIN_INFO
295 LSA_UNICODE_STRING Name
;
297 } POLICY_PRIMARY_DOMAIN_INFO
, *PPOLICY_PRIMARY_DOMAIN_INFO
;
299 typedef struct _POLICY_ACCOUNT_DOMAIN_INFO
301 LSA_UNICODE_STRING DomainName
;
303 } POLICY_ACCOUNT_DOMAIN_INFO
, *PPOLICY_ACCOUNT_DOMAIN_INFO
;
305 typedef struct _LSA_FOREST_TRUST_INFORMATION
{
308 PLSA_FOREST_TRUST_RECORD
* Entries
;
310 } LSA_FOREST_TRUST_INFORMATION
, *PLSA_FOREST_TRUST_INFORMATION
;
312 typedef struct _SECURITY_LOGON_SESSION_DATA
{
315 LSA_UNICODE_STRING UserName
;
316 LSA_UNICODE_STRING LogonDomain
;
317 LSA_UNICODE_STRING AuthenticationPackage
;
321 LARGE_INTEGER LogonTime
;
322 LSA_UNICODE_STRING LogonServer
;
323 LSA_UNICODE_STRING DnsDomainName
;
324 LSA_UNICODE_STRING Upn
;
325 } SECURITY_LOGON_SESSION_DATA
, * PSECURITY_LOGON_SESSION_DATA
;
327 typedef enum _TRUSTED_INFORMATION_CLASS
{
329 TrustedDomainNameInformation
= 1,
330 TrustedControllersInformation
,
331 TrustedPosixOffsetInformation
,
332 TrustedPasswordInformation
,
333 TrustedDomainInformationBasic
,
334 TrustedDomainInformationEx
,
335 TrustedDomainAuthInformation
,
336 TrustedDomainFullInformation
,
337 TrustedDomainAuthInformationInternal
,
338 TrustedDomainFullInformationInternal
,
339 TrustedDomainInformationEx2Internal
,
340 TrustedDomainFullInformation2Internal
,
342 } TRUSTED_INFORMATION_CLASS
, *PTRUSTED_INFORMATION_CLASS
;
346 LsaNtStatusToWinError(NTSTATUS Status
);
349 LsaOpenPolicy(PLSA_UNICODE_STRING lsaucs
,PLSA_OBJECT_ATTRIBUTES lsaoa
,ACCESS_MASK access
,PLSA_HANDLE lsah
);
352 LsaQueryInformationPolicy(LSA_HANDLE lsah
,POLICY_INFORMATION_CLASS pic
,PVOID
* pv
);
355 LsaFreeMemory(PVOID pv
);
358 LsaClose(LSA_HANDLE ObjectHandle
);
362 LSA_HANDLE PolicyHandle
,
364 PLSA_UNICODE_STRING UserRights
,
369 LsaCreateTrustedDomainEx(
370 LSA_HANDLE PolicyHandle
,
371 PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation
,
372 PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation
,
373 ACCESS_MASK DesiredAccess
,
374 PLSA_HANDLE TrustedDomainHandle
378 LsaDeleteTrustedDomain(
379 LSA_HANDLE PolicyHandle
,
380 PSID TrustedDomainSid
384 LsaEnumerateAccountRights(
385 LSA_HANDLE PolicyHandle
,
387 PLSA_UNICODE_STRING
*UserRights
,
392 LsaEnumerateAccountsWithUserRight(
393 LSA_HANDLE PolicyHandle
,
394 OPTIONAL PLSA_UNICODE_STRING UserRights
,
395 PVOID
*EnumerationBuffer
,
400 LsaEnumerateTrustedDomains(
401 LSA_HANDLE PolicyHandle
,
402 PLSA_ENUMERATION_HANDLE EnumerationContext
,
404 ULONG PreferedMaximumLength
,
409 LsaEnumerateTrustedDomainsEx(
410 LSA_HANDLE PolicyHandle
,
411 PLSA_ENUMERATION_HANDLE EnumerationContext
,
413 ULONG PreferedMaximumLength
,
419 LSA_HANDLE PolicyHandle
,
421 PLSA_UNICODE_STRING Names
,
422 PLSA_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
423 PLSA_TRANSLATED_SID
*Sids
428 LSA_HANDLE PolicyHandle
,
431 PLSA_UNICODE_STRING Names
,
432 PLSA_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
433 PLSA_TRANSLATED_SID2
*Sids
438 LSA_HANDLE PolicyHandle
,
441 PLSA_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
442 PLSA_TRANSLATED_NAME
*Names
446 LsaOpenTrustedDomainByName(
447 LSA_HANDLE PolicyHandle
,
448 PLSA_UNICODE_STRING TrustedDomainName
,
449 ACCESS_MASK DesiredAccess
,
450 PLSA_HANDLE TrustedDomainHandle
454 LsaQueryDomainInformationPolicy(
455 LSA_HANDLE PolicyHandle
,
456 POLICY_DOMAIN_INFORMATION_CLASS InformationClass
,
461 LsaQueryForestTrustInformation(
462 LSA_HANDLE PolicyHandle
,
463 PLSA_UNICODE_STRING TrustedDomainName
,
464 PLSA_FOREST_TRUST_INFORMATION
* ForestTrustInfo
468 LsaQueryTrustedDomainInfoByName(
469 LSA_HANDLE PolicyHandle
,
470 PLSA_UNICODE_STRING TrustedDomainName
,
471 TRUSTED_INFORMATION_CLASS InformationClass
,
476 LsaQueryTrustedDomainInfo(
477 LSA_HANDLE PolicyHandle
,
478 PSID TrustedDomainSid
,
479 TRUSTED_INFORMATION_CLASS InformationClass
,
484 LsaRemoveAccountRights(
485 LSA_HANDLE PolicyHandle
,
488 PLSA_UNICODE_STRING UserRights
,
493 LsaRetrievePrivateData(
494 LSA_HANDLE PolicyHandle
,
495 PLSA_UNICODE_STRING KeyName
,
496 PLSA_UNICODE_STRING
* PrivateData
500 LsaSetDomainInformationPolicy(
501 LSA_HANDLE PolicyHandle
,
502 POLICY_DOMAIN_INFORMATION_CLASS InformationClass
,
507 LsaSetInformationPolicy(
508 LSA_HANDLE PolicyHandle
,
509 POLICY_INFORMATION_CLASS InformationClass
,
514 LsaSetForestTrustInformation(
515 LSA_HANDLE PolicyHandle
,
516 PLSA_UNICODE_STRING TrustedDomainName
,
517 PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo
,
519 PLSA_FOREST_TRUST_COLLISION_INFORMATION
* CollisionInfo
523 LsaSetTrustedDomainInfoByName(
524 LSA_HANDLE PolicyHandle
,
525 PLSA_UNICODE_STRING TrustedDomainName
,
526 TRUSTED_INFORMATION_CLASS InformationClass
,
531 LsaSetTrustedDomainInformation(
532 LSA_HANDLE PolicyHandle
,
533 PSID TrustedDomainSid
,
534 TRUSTED_INFORMATION_CLASS InformationClass
,
540 LSA_HANDLE PolicyHandle
,
541 PLSA_UNICODE_STRING KeyName
,
542 PLSA_UNICODE_STRING PrivateData
546 LsaEnumerateLogonSessions(
547 PULONG LogonSessionCount
,
548 PLUID
* LogonSessionList
553 LsaGetLogonSessionData(
555 PSECURITY_LOGON_SESSION_DATA
* ppLogonSessionData
559 LsaRegisterPolicyChangeNotification(
560 POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass
,
561 HANDLE NotificationEventHandle
566 LsaUnregisterPolicyChangeNotification(
567 POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass
,
568 HANDLE NotificationEventHandle
574 #endif /* defined(__cplusplus) */
576 #endif /* !defined(__WINE_NTSECAPI_H) */
578 #endif /* __USE_W32API */