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
,
138 } POLICY_INFORMATION_CLASS
, *PPOLICY_INFORMATION_CLASS
;
140 typedef ULONG POLICY_AUDIT_EVENT_OPTIONS
, *PPOLICY_AUDIT_EVENT_OPTIONS
;
142 typedef struct _POLICY_AUDIT_EVENTS_INFO
144 WINBOOL AuditingMode
;
145 PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions
;
146 ULONG MaximumAuditEventCount
;
147 } POLICY_AUDIT_EVENTS_INFO
, *PPOLICY_AUDIT_EVENTS_INFO
;
149 typedef struct _LSA_FOREST_TRUST_DOMAIN_INFO
{
152 LSA_UNICODE_STRING DnsName
;
153 LSA_UNICODE_STRING NetbiosName
;
155 } LSA_FOREST_TRUST_DOMAIN_INFO
, *PLSA_FOREST_TRUST_DOMAIN_INFO
;
158 #define MAX_FOREST_TRUST_BINARY_DATA_SIZE ( 128 * 1024 )
160 typedef struct _LSA_FOREST_TRUST_BINARY_DATA
{
165 } LSA_FOREST_TRUST_BINARY_DATA
, *PLSA_FOREST_TRUST_BINARY_DATA
;
169 ForestTrustTopLevelName
,
170 ForestTrustTopLevelNameEx
,
171 ForestTrustDomainInfo
,
172 ForestTrustRecordTypeLast
= ForestTrustDomainInfo
174 } LSA_FOREST_TRUST_RECORD_TYPE
;
176 typedef struct _LSA_AUTH_INFORMATION
{
178 LARGE_INTEGER LastUpdateTime
;
180 ULONG AuthInfoLength
;
182 } LSA_AUTH_INFORMATION
, *PLSA_AUTH_INFORMATION
;
184 typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION
{
186 ULONG IncomingAuthInfos
;
187 PLSA_AUTH_INFORMATION IncomingAuthenticationInformation
;
188 PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation
;
189 ULONG OutgoingAuthInfos
;
190 PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation
;
191 PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation
;
193 } TRUSTED_DOMAIN_AUTH_INFORMATION
, *PTRUSTED_DOMAIN_AUTH_INFORMATION
;
195 typedef struct _LSA_FOREST_TRUST_RECORD
{
198 LSA_FOREST_TRUST_RECORD_TYPE ForestTrustType
;
204 LSA_UNICODE_STRING TopLevelName
;
205 LSA_FOREST_TRUST_DOMAIN_INFO DomainInfo
;
206 LSA_FOREST_TRUST_BINARY_DATA Data
;
209 } LSA_FOREST_TRUST_RECORD
, *PLSA_FOREST_TRUST_RECORD
;
211 typedef struct _LSA_TRANSLATED_SID
{
217 } LSA_TRANSLATED_SID
, *PLSA_TRANSLATED_SID
;
219 typedef struct _LSA_TRANSLATED_SID2
{
226 } LSA_TRANSLATED_SID2
, *PLSA_TRANSLATED_SID2
;
228 typedef struct _LSA_TRANSLATED_NAME
{
231 LSA_UNICODE_STRING Name
;
234 } LSA_TRANSLATED_NAME
, *PLSA_TRANSLATED_NAME
;
242 } LSA_FOREST_TRUST_COLLISION_RECORD_TYPE
;
244 typedef struct _LSA_FOREST_TRUST_COLLISION_RECORD
{
247 LSA_FOREST_TRUST_COLLISION_RECORD_TYPE Type
;
249 LSA_UNICODE_STRING Name
;
251 } LSA_FOREST_TRUST_COLLISION_RECORD
, *PLSA_FOREST_TRUST_COLLISION_RECORD
;
253 typedef struct _LSA_FOREST_TRUST_COLLISION_INFORMATION
{
256 PLSA_FOREST_TRUST_COLLISION_RECORD
* Entries
;
258 } LSA_FOREST_TRUST_COLLISION_INFORMATION
, *PLSA_FOREST_TRUST_COLLISION_INFORMATION
;
260 typedef struct _TRUSTED_DOMAIN_INFORMATION_EX
{
262 LSA_UNICODE_STRING Name
;
263 LSA_UNICODE_STRING FlatName
;
265 ULONG TrustDirection
;
267 ULONG TrustAttributes
;
269 } TRUSTED_DOMAIN_INFORMATION_EX
, *PTRUSTED_DOMAIN_INFORMATION_EX
;
271 typedef ULONG LSA_ENUMERATION_HANDLE
, *PLSA_ENUMERATION_HANDLE
;
273 typedef struct _LSA_TRUST_INFORMATION
{
275 LSA_UNICODE_STRING Name
;
278 } LSA_TRUST_INFORMATION
, *PLSA_TRUST_INFORMATION
;
280 typedef struct _LSA_REFERENCED_DOMAIN_LIST
{
283 PLSA_TRUST_INFORMATION Domains
;
285 } LSA_REFERENCED_DOMAIN_LIST
, *PLSA_REFERENCED_DOMAIN_LIST
;
287 typedef enum _POLICY_DOMAIN_INFORMATION_CLASS
{
289 PolicyDomainEfsInformation
= 2,
290 PolicyDomainKerberosTicketInformation
292 } POLICY_DOMAIN_INFORMATION_CLASS
, *PPOLICY_DOMAIN_INFORMATION_CLASS
;
294 typedef struct _POLICY_PRIMARY_DOMAIN_INFO
296 LSA_UNICODE_STRING Name
;
298 } POLICY_PRIMARY_DOMAIN_INFO
, *PPOLICY_PRIMARY_DOMAIN_INFO
;
300 typedef struct _POLICY_ACCOUNT_DOMAIN_INFO
302 LSA_UNICODE_STRING DomainName
;
304 } POLICY_ACCOUNT_DOMAIN_INFO
, *PPOLICY_ACCOUNT_DOMAIN_INFO
;
306 typedef struct _LSA_FOREST_TRUST_INFORMATION
{
309 PLSA_FOREST_TRUST_RECORD
* Entries
;
311 } LSA_FOREST_TRUST_INFORMATION
, *PLSA_FOREST_TRUST_INFORMATION
;
313 typedef struct _SECURITY_LOGON_SESSION_DATA
{
316 LSA_UNICODE_STRING UserName
;
317 LSA_UNICODE_STRING LogonDomain
;
318 LSA_UNICODE_STRING AuthenticationPackage
;
322 LARGE_INTEGER LogonTime
;
323 LSA_UNICODE_STRING LogonServer
;
324 LSA_UNICODE_STRING DnsDomainName
;
325 LSA_UNICODE_STRING Upn
;
326 } SECURITY_LOGON_SESSION_DATA
, * PSECURITY_LOGON_SESSION_DATA
;
328 typedef enum _TRUSTED_INFORMATION_CLASS
{
330 TrustedDomainNameInformation
= 1,
331 TrustedControllersInformation
,
332 TrustedPosixOffsetInformation
,
333 TrustedPasswordInformation
,
334 TrustedDomainInformationBasic
,
335 TrustedDomainInformationEx
,
336 TrustedDomainAuthInformation
,
337 TrustedDomainFullInformation
,
338 TrustedDomainAuthInformationInternal
,
339 TrustedDomainFullInformationInternal
,
340 TrustedDomainInformationEx2Internal
,
341 TrustedDomainFullInformation2Internal
,
343 } TRUSTED_INFORMATION_CLASS
, *PTRUSTED_INFORMATION_CLASS
;
347 LsaNtStatusToWinError(NTSTATUS Status
);
350 LsaOpenPolicy(PLSA_UNICODE_STRING lsaucs
,PLSA_OBJECT_ATTRIBUTES lsaoa
,ACCESS_MASK access
,PLSA_HANDLE lsah
);
353 LsaQueryInformationPolicy(LSA_HANDLE lsah
,POLICY_INFORMATION_CLASS pic
,PVOID
* pv
);
356 LsaFreeMemory(PVOID pv
);
359 LsaClose(LSA_HANDLE ObjectHandle
);
363 LSA_HANDLE PolicyHandle
,
365 PLSA_UNICODE_STRING UserRights
,
370 LsaCreateTrustedDomainEx(
371 LSA_HANDLE PolicyHandle
,
372 PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation
,
373 PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation
,
374 ACCESS_MASK DesiredAccess
,
375 PLSA_HANDLE TrustedDomainHandle
379 LsaDeleteTrustedDomain(
380 LSA_HANDLE PolicyHandle
,
381 PSID TrustedDomainSid
385 LsaEnumerateAccountRights(
386 LSA_HANDLE PolicyHandle
,
388 PLSA_UNICODE_STRING
*UserRights
,
393 LsaEnumerateAccountsWithUserRight(
394 LSA_HANDLE PolicyHandle
,
395 OPTIONAL PLSA_UNICODE_STRING UserRights
,
396 PVOID
*EnumerationBuffer
,
401 LsaEnumerateTrustedDomains(
402 LSA_HANDLE PolicyHandle
,
403 PLSA_ENUMERATION_HANDLE EnumerationContext
,
405 ULONG PreferedMaximumLength
,
410 LsaEnumerateTrustedDomainsEx(
411 LSA_HANDLE PolicyHandle
,
412 PLSA_ENUMERATION_HANDLE EnumerationContext
,
414 ULONG PreferedMaximumLength
,
420 LSA_HANDLE PolicyHandle
,
422 PLSA_UNICODE_STRING Names
,
423 PLSA_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
424 PLSA_TRANSLATED_SID
*Sids
429 LSA_HANDLE PolicyHandle
,
432 PLSA_UNICODE_STRING Names
,
433 PLSA_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
434 PLSA_TRANSLATED_SID2
*Sids
439 LSA_HANDLE PolicyHandle
,
442 PLSA_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
443 PLSA_TRANSLATED_NAME
*Names
447 LsaOpenTrustedDomainByName(
448 LSA_HANDLE PolicyHandle
,
449 PLSA_UNICODE_STRING TrustedDomainName
,
450 ACCESS_MASK DesiredAccess
,
451 PLSA_HANDLE TrustedDomainHandle
455 LsaQueryDomainInformationPolicy(
456 LSA_HANDLE PolicyHandle
,
457 POLICY_DOMAIN_INFORMATION_CLASS InformationClass
,
462 LsaQueryForestTrustInformation(
463 LSA_HANDLE PolicyHandle
,
464 PLSA_UNICODE_STRING TrustedDomainName
,
465 PLSA_FOREST_TRUST_INFORMATION
* ForestTrustInfo
469 LsaQueryTrustedDomainInfoByName(
470 LSA_HANDLE PolicyHandle
,
471 PLSA_UNICODE_STRING TrustedDomainName
,
472 TRUSTED_INFORMATION_CLASS InformationClass
,
477 LsaQueryTrustedDomainInfo(
478 LSA_HANDLE PolicyHandle
,
479 PSID TrustedDomainSid
,
480 TRUSTED_INFORMATION_CLASS InformationClass
,
485 LsaRemoveAccountRights(
486 LSA_HANDLE PolicyHandle
,
489 PLSA_UNICODE_STRING UserRights
,
494 LsaRetrievePrivateData(
495 LSA_HANDLE PolicyHandle
,
496 PLSA_UNICODE_STRING KeyName
,
497 PLSA_UNICODE_STRING
* PrivateData
501 LsaSetDomainInformationPolicy(
502 LSA_HANDLE PolicyHandle
,
503 POLICY_DOMAIN_INFORMATION_CLASS InformationClass
,
508 LsaSetInformationPolicy(
509 LSA_HANDLE PolicyHandle
,
510 POLICY_INFORMATION_CLASS InformationClass
,
515 LsaSetForestTrustInformation(
516 LSA_HANDLE PolicyHandle
,
517 PLSA_UNICODE_STRING TrustedDomainName
,
518 PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo
,
520 PLSA_FOREST_TRUST_COLLISION_INFORMATION
* CollisionInfo
524 LsaSetTrustedDomainInfoByName(
525 LSA_HANDLE PolicyHandle
,
526 PLSA_UNICODE_STRING TrustedDomainName
,
527 TRUSTED_INFORMATION_CLASS InformationClass
,
532 LsaSetTrustedDomainInformation(
533 LSA_HANDLE PolicyHandle
,
534 PSID TrustedDomainSid
,
535 TRUSTED_INFORMATION_CLASS InformationClass
,
541 LSA_HANDLE PolicyHandle
,
542 PLSA_UNICODE_STRING KeyName
,
543 PLSA_UNICODE_STRING PrivateData
547 LsaEnumerateLogonSessions(
548 PULONG LogonSessionCount
,
549 PLUID
* LogonSessionList
554 LsaGetLogonSessionData(
556 PSECURITY_LOGON_SESSION_DATA
* ppLogonSessionData
560 LsaRegisterPolicyChangeNotification(
561 POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass
,
562 HANDLE NotificationEventHandle
567 LsaUnregisterPolicyChangeNotification(
568 POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass
,
569 HANDLE NotificationEventHandle
575 #endif /* defined(__cplusplus) */
577 #endif /* !defined(__WINE_NTSECAPI_H) */
579 #endif /* __USE_W32API */