[LSASRV]
[reactos.git] / reactos / dll / win32 / lsasrv / lsasrv.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: Local Security Authority (LSA) Server
4 * FILE: reactos/dll/win32/lsasrv/lsasrv.h
5 * PURPOSE: Common header file
6 *
7 * PROGRAMMERS: Eric Kohl
8 */
9
10 #define WIN32_NO_STATUS
11 #include <windows.h>
12 #define NTOS_MODE_USER
13 #include <ndk/cmfuncs.h>
14 #include <ndk/kefuncs.h>
15 #include <ndk/lpctypes.h>
16 #include <ndk/lpcfuncs.h>
17 #include <ndk/obfuncs.h>
18 #include <ndk/rtlfuncs.h>
19 #include <ndk/setypes.h>
20
21 #include <ntlsa.h>
22 #include <ntsecapi.h>
23 #include <sddl.h>
24
25 #include <string.h>
26
27 #include "lsass.h"
28 #include "lsa_s.h"
29
30 #include <wine/debug.h>
31
32
33 typedef enum _LSA_DB_OBJECT_TYPE
34 {
35 LsaDbIgnoreObject,
36 LsaDbPolicyObject,
37 LsaDbAccountObject,
38 LsaDbDomainObject,
39 LsaDbSecretObject
40 } LSA_DB_OBJECT_TYPE, *PLSA_DB_OBJECT_TYPE;
41
42 typedef struct _LSA_DB_OBJECT
43 {
44 ULONG Signature;
45 LSA_DB_OBJECT_TYPE ObjectType;
46 ULONG RefCount;
47 ACCESS_MASK Access;
48 HANDLE KeyHandle;
49 struct _LSA_DB_OBJECT *ParentObject;
50 } LSA_DB_OBJECT, *PLSA_DB_OBJECT;
51
52 #define LSAP_DB_SIGNATURE 0x12345678
53
54
55 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
56 {
57 BOOLEAN AuditingMode;
58 DWORD MaximumAuditEventCount;
59 DWORD AuditEvents[0];
60 } LSAP_POLICY_AUDIT_EVENTS_DATA, *PLSAP_POLICY_AUDIT_EVENTS_DATA;
61
62
63 /* authport.c */
64 NTSTATUS
65 StartAuthenticationPort(VOID);
66
67 /* database.c */
68 NTSTATUS
69 LsapInitDatabase(VOID);
70
71 NTSTATUS
72 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject,
73 IN LPWSTR ContainerName,
74 IN LPWSTR ObjectName,
75 IN LSA_DB_OBJECT_TYPE HandleType,
76 IN ACCESS_MASK DesiredAccess,
77 OUT PLSA_DB_OBJECT *DbObject);
78
79 NTSTATUS
80 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject,
81 IN LPWSTR ContainerName,
82 IN LPWSTR ObjectName,
83 IN LSA_DB_OBJECT_TYPE ObjectType,
84 IN ACCESS_MASK DesiredAccess,
85 OUT PLSA_DB_OBJECT *DbObject);
86
87 NTSTATUS
88 LsapValidateDbObject(IN LSAPR_HANDLE Handle,
89 IN LSA_DB_OBJECT_TYPE HandleType,
90 IN ACCESS_MASK GrantedAccess,
91 OUT PLSA_DB_OBJECT *DbObject);
92
93 NTSTATUS
94 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject);
95
96 NTSTATUS
97 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject,
98 LPWSTR AttributeName,
99 LPVOID AttributeData,
100 PULONG AttributeSize);
101
102 NTSTATUS
103 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject,
104 LPWSTR AttributeName,
105 LPVOID AttributeData,
106 ULONG AttributeSize);
107
108 /* lsarpc.c */
109 VOID
110 LsarStartRpcServer(VOID);
111
112 /* policy.c */
113 NTSTATUS
114 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject,
115 PLSAPR_POLICY_INFORMATION *PolicyInformation);
116
117 NTSTATUS
118 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject,
119 PLSAPR_POLICY_INFORMATION *PolicyInformation);
120
121 NTSTATUS
122 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject,
123 PLSAPR_POLICY_INFORMATION *PolicyInformation);
124
125 NTSTATUS
126 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject,
127 PLSAPR_POLICY_INFORMATION *PolicyInformation);
128
129 NTSTATUS
130 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject,
131 PLSAPR_POLICY_INFORMATION *PolicyInformation);
132
133 NTSTATUS
134 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject,
135 PLSAPR_POLICY_INFORMATION *PolicyInformation);
136
137 NTSTATUS
138 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject,
139 PLSAPR_POLICY_INFORMATION *PolicyInformation);
140
141 NTSTATUS
142 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject,
143 PLSAPR_POLICY_INFORMATION *PolicyInformation);
144
145 NTSTATUS
146 LsarQueryModification(PLSA_DB_OBJECT PolicyObject,
147 PLSAPR_POLICY_INFORMATION *PolicyInformation);
148
149 NTSTATUS
150 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject,
151 PLSAPR_POLICY_INFORMATION *PolicyInformation);
152
153 NTSTATUS
154 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject,
155 PLSAPR_POLICY_INFORMATION *PolicyInformation);
156
157 NTSTATUS
158 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject,
159 PLSAPR_POLICY_INFORMATION *PolicyInformation);
160
161 NTSTATUS
162 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject,
163 PLSAPR_POLICY_INFORMATION *PolicyInformation);
164
165 NTSTATUS
166 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject,
167 PLSAPR_POLICY_PRIMARY_DOM_INFO Info);
168
169 NTSTATUS
170 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject,
171 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info);
172
173 NTSTATUS
174 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject,
175 PLSAPR_POLICY_DNS_DOMAIN_INFO Info);
176
177 /* privileges.c */
178 NTSTATUS
179 LsarpLookupPrivilegeName(PLUID Value,
180 PUNICODE_STRING *Name);
181
182 NTSTATUS
183 LsarpLookupPrivilegeValue(PUNICODE_STRING Name,
184 PLUID Value);
185
186 NTSTATUS
187 LsarpEnumeratePrivileges(DWORD *EnumerationContext,
188 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer,
189 DWORD PreferedMaximumLength);
190
191 /* sids.h */
192 NTSTATUS
193 LsapInitSids(VOID);
194
195 NTSTATUS
196 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
197 PLSAPR_TRANSLATED_NAME OutputNames);
198
199 NTSTATUS
200 LsapLookupNames(DWORD Count,
201 PRPC_UNICODE_STRING Names,
202 PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
203 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids,
204 LSAP_LOOKUP_LEVEL LookupLevel,
205 DWORD *MappedCount,
206 DWORD LookupOptions,
207 DWORD ClientRevision);
208
209 /* EOF */