blob: 1a93014b2527808df91c0c2a0a9239ef3c3023ad [file] [log] [blame]
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00001/*
2 * Copyright (C) 1999 Juergen Schmied
3 *
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.
8 *
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.
13 *
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
17 */
18
Patrik Stridvall4a739731999-07-04 11:01:21 +000019#ifndef __WINE_NTSECAPI_H
20#define __WINE_NTSECAPI_H
21
Patrik Stridvall4a739731999-07-04 11:01:21 +000022#ifdef __cplusplus
23extern "C" {
24#endif /* defined(__cplusplus) */
25
Andriy Palamarchuk63709f02002-09-11 00:48:26 +000026/* Policy access rights */
27#define POLICY_VIEW_LOCAL_INFORMATION 0x00000001L
28#define POLICY_VIEW_AUDIT_INFORMATION 0x00000002L
29#define POLICY_GET_PRIVATE_INFORMATION 0x00000004L
30#define POLICY_TRUST_ADMIN 0x00000008L
31#define POLICY_CREATE_ACCOUNT 0x00000010L
32#define POLICY_CREATE_SECRET 0x00000020L
33#define POLICY_CREATE_PRIVILEGE 0x00000040L
34#define POLICY_SET_DEFAULT_QUOTA_LIMITS 0x00000080L
35#define POLICY_SET_AUDIT_REQUIREMENTS 0x00000100L
36#define POLICY_AUDIT_LOG_ADMIN 0x00000200L
37#define POLICY_SERVER_ADMIN 0x00000400L
38#define POLICY_LOOKUP_NAMES 0x00000800L
39#define POLICY_NOTIFICATION 0x00001000L
40
41#define POLICY_ALL_ACCESS ( \
42 STANDARD_RIGHTS_REQUIRED | \
43 POLICY_VIEW_LOCAL_INFORMATION | \
44 POLICY_VIEW_AUDIT_INFORMATION | \
45 POLICY_GET_PRIVATE_INFORMATION | \
46 POLICY_TRUST_ADMIN | \
47 POLICY_CREATE_ACCOUNT | \
48 POLICY_CREATE_SECRET | \
49 POLICY_CREATE_PRIVILEGE | \
50 POLICY_SET_DEFAULT_QUOTA_LIMITS | \
51 POLICY_SET_AUDIT_REQUIREMENTS | \
52 POLICY_AUDIT_LOG_ADMIN | \
53 POLICY_SERVER_ADMIN | \
54 POLICY_LOOKUP_NAMES)
55
56
57#define POLICY_READ ( \
58 STANDARD_RIGHTS_READ | \
59 POLICY_VIEW_AUDIT_INFORMATION | \
60 POLICY_GET_PRIVATE_INFORMATION)
61
62#define POLICY_WRITE ( \
63 STANDARD_RIGHTS_WRITE | \
64 POLICY_TRUST_ADMIN | \
65 POLICY_CREATE_ACCOUNT | \
66 POLICY_CREATE_SECRET | \
67 POLICY_CREATE_PRIVILEGE | \
68 POLICY_SET_DEFAULT_QUOTA_LIMITS | \
69 POLICY_SET_AUDIT_REQUIREMENTS | \
70 POLICY_AUDIT_LOG_ADMIN | \
71 POLICY_SERVER_ADMIN)
72
73#define POLICY_EXECUTE ( \
74 STANDARD_RIGHTS_EXECUTE | \
75 POLICY_VIEW_LOCAL_INFORMATION | \
76 POLICY_LOOKUP_NAMES)
77
Juan Lang213c17e2005-01-21 10:15:50 +000078#define POLICY_AUDIT_EVENT_UNCHANGED 0x00000000L
79#define POLICY_AUDIT_EVENT_SUCCESS 0x00000001L
80#define POLICY_AUDIT_EVENT_FAILURE 0x00000002L
81#define POLICY_AUDIT_EVENT_NONE 0x00000004L
82
83#define POLICY_AUDIT_EVENT_MASK (POLICY_AUDIT_EVENT_SUCCESS | \
84 POLICY_AUDIT_EVENT_FAILURE | \
85 POLICY_AUDIT_EVENT_NONE)
86
87/* logon rights names */
88#define SE_BATCH_LOGON_NAME \
89 TEXT("SeBatchLogonRight")
90#define SE_INTERACTIVE_LOGON_NAME \
91 TEXT("SeInteractiveLogonRight")
92#define SE_NETWORK_LOGON_NAME \
93 TEXT("SeNetworkLogonRight")
94#define SE_REMOTE_INTERACTIVE_LOGON_NAME \
95 TEXT("SeRemoteInteractiveLogonRight")
96#define SE_SERVICE_LOGON_NAME \
97 TEXT("SeServiceLogonRight")
98#define SE_DENY_BATCH_LOGON_NAME \
99 TEXT("SeDenyBatchLogonRight")
100#define SE_DENY_INTERACTIVE_LOGON_NAME \
101 TEXT("SeDenyInteractiveLogonRight")
102#define SE_DENY_NETWORK_LOGON_NAME \
103 TEXT("SeDenyNetworkLogonRight")
104#define SE_DENY_REMOTE_INTERACTIVE_LOGON_NAME \
105 TEXT("SeDenyRemoteInteractiveLogonRight")
106#define SE_DENY_SERVICE_LOGON_NAME \
107 TEXT("SeDenyServiceLogonRight")
108
Francois Gouget6fb12fc2005-08-16 16:01:49 +0000109#ifndef WINE_NTSTATUS_DECLARED
110#define WINE_NTSTATUS_DECLARED
111typedef LONG NTSTATUS;
112#endif
113#ifndef WINE_PNTSTATUS_DECLARED
114#define WINE_PNTSTATUS_DECLARED
115typedef NTSTATUS *PNTSTATUS;
116#endif
117
Juan Lang213c17e2005-01-21 10:15:50 +0000118typedef enum _SECURITY_LOGON_TYPE
119{
120 Interactive = 2,
121 Network,
122 Batch,
123 Service,
124 Proxy
125} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
126
127typedef enum _POLICY_AUDIT_EVENT_TYPE
128{
129 AuditCategorySystem,
130 AuditCategoryLogon,
131 AuditCategoryObjectAccess,
132 AuditCategoryPrivilegeUse,
133 AuditCategoryDetailedTracking,
134 AuditCategoryPolicyChange,
135 AuditCategoryAccountManagement
136} POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE;
137
Patrik Stridvall4a739731999-07-04 11:01:21 +0000138typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
139typedef STRING LSA_STRING, *PLSA_STRING;
140typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
141
142typedef PVOID LSA_HANDLE, *PLSA_HANDLE;
Hans Leidekker0cc20312005-01-03 17:12:51 +0000143typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE;
Patrik Stridvall4a739731999-07-04 11:01:21 +0000144
Vincent BĂ©ron9a624912002-05-31 23:06:46 +0000145typedef enum
Juergen Schmied044db461999-12-11 23:19:54 +0000146{
147 PolicyAuditLogInformation = 1,
148 PolicyAuditEventsInformation,
149 PolicyPrimaryDomainInformation,
150 PolicyPdAccountInformation,
151 PolicyAccountDomainInformation,
152 PolicyLsaServerRoleInformation,
153 PolicyReplicaSourceInformation,
154 PolicyDefaultQuotaInformation,
155 PolicyModificationInformation,
156 PolicyAuditFullSetInformation,
157 PolicyAuditFullQueryInformation,
158 PolicyDnsDomainInformation
159} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
160
Juergen Schmied02d45e52000-01-23 22:35:33 +0000161typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS;
162
Andriy Palamarchuk63709f02002-09-11 00:48:26 +0000163typedef struct _POLICY_AUDIT_EVENTS_INFO
Juergen Schmied02d45e52000-01-23 22:35:33 +0000164{
165 BOOLEAN AuditingMode;
166 PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions;
167 ULONG MaximumAuditEventCount;
168} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
169
Andriy Palamarchuk63709f02002-09-11 00:48:26 +0000170typedef struct _POLICY_PRIMARY_DOMAIN_INFO
Juergen Schmied02d45e52000-01-23 22:35:33 +0000171{
172 LSA_UNICODE_STRING Name;
173 PSID Sid;
174} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO;
175
Andriy Palamarchuk63709f02002-09-11 00:48:26 +0000176typedef struct _POLICY_ACCOUNT_DOMAIN_INFO
177{
178 LSA_UNICODE_STRING DomainName;
179 PSID DomainSid;
180} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO;
181
Mike McCormack55257302004-08-16 19:47:21 +0000182typedef struct
183{
184 SID_NAME_USE Use;
185 LSA_UNICODE_STRING Name;
186 LONG DomainIndex;
187} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME;
188
189typedef struct
190{
191 LSA_UNICODE_STRING Name;
192 PSID Sid;
193} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION;
194
195typedef struct
196{
197 ULONG Entries;
198 PLSA_TRUST_INFORMATION Domains;
199} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST;
Juergen Schmied02d45e52000-01-23 22:35:33 +0000200
Hans Leidekker0cc20312005-01-03 17:12:51 +0000201typedef struct _LSA_TRANSLATED_SID
202{
203 SID_NAME_USE Use;
204 ULONG RelativeId;
205 LONG DomainIndex;
206} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
Juergen Schmied044db461999-12-11 23:19:54 +0000207
Francois Gouget6fb12fc2005-08-16 16:01:49 +0000208NTSTATUS WINAPI LsaCallAuthenticationPackage(HANDLE,ULONG,PVOID,ULONG,PVOID*,PULONG,PNTSTATUS);
Hans Leidekker0cc20312005-01-03 17:12:51 +0000209NTSTATUS WINAPI LsaClose(LSA_HANDLE);
Hans Leidekker524251d2005-07-18 09:11:14 +0000210NTSTATUS WINAPI LsaConnectUntrusted(PHANDLE);
211NTSTATUS WINAPI LsaDeregisterLogonProcess(HANDLE);
Hans Leidekker0cc20312005-01-03 17:12:51 +0000212NTSTATUS WINAPI LsaEnumerateTrustedDomains(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,PVOID*,ULONG,PULONG);
Juergen Schmied044db461999-12-11 23:19:54 +0000213NTSTATUS WINAPI LsaFreeMemory(PVOID);
Hans Leidekker0cc20312005-01-03 17:12:51 +0000214NTSTATUS WINAPI LsaLookupNames(LSA_HANDLE,ULONG Count,PLSA_UNICODE_STRING,PLSA_REFERENCED_DOMAIN_LIST*,
215 PLSA_TRANSLATED_SID*);
Juan Lang213c17e2005-01-21 10:15:50 +0000216NTSTATUS WINAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID *,PLSA_REFERENCED_DOMAIN_LIST *,PLSA_TRANSLATED_NAME *);
Hans Leidekker0cc20312005-01-03 17:12:51 +0000217ULONG WINAPI LsaNtStatusToWinError(NTSTATUS);
218NTSTATUS WINAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,ACCESS_MASK,PLSA_HANDLE);
219NTSTATUS WINAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*);
Mike McCormack5e62bd02005-06-13 10:04:20 +0000220NTSTATUS WINAPI LsaRetrievePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,PLSA_UNICODE_STRING*);
Hans Leidekker0cc20312005-01-03 17:12:51 +0000221NTSTATUS WINAPI LsaSetInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID);
Mike McCormack5e62bd02005-06-13 10:04:20 +0000222NTSTATUS WINAPI LsaStorePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,PLSA_UNICODE_STRING);
Juergen Schmied044db461999-12-11 23:19:54 +0000223
Patrik Stridvall4a739731999-07-04 11:01:21 +0000224#ifdef __cplusplus
225} /* extern "C" */
226#endif /* defined(__cplusplus) */
227
228#endif /* !defined(__WINE_NTSECAPI_H) */