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
7 * PROGRAMMERS: Eric Kohl
10 #define WIN32_NO_STATUS
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>
31 #include <wine/debug.h>
34 typedef enum _LSA_DB_OBJECT_TYPE
41 } LSA_DB_OBJECT_TYPE
, *PLSA_DB_OBJECT_TYPE
;
43 typedef struct _LSA_DB_OBJECT
46 LSA_DB_OBJECT_TYPE ObjectType
;
51 struct _LSA_DB_OBJECT
*ParentObject
;
52 } LSA_DB_OBJECT
, *PLSA_DB_OBJECT
;
54 #define LSAP_DB_SIGNATURE 0x12345678
57 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
60 DWORD MaximumAuditEventCount
;
62 } LSAP_POLICY_AUDIT_EVENTS_DATA
, *PLSAP_POLICY_AUDIT_EVENTS_DATA
;
65 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority
;
66 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority
;
67 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority
;
68 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority
;
69 extern SID_IDENTIFIER_AUTHORITY NtAuthority
;
71 extern PSID BuiltinDomainSid
;
72 extern UNICODE_STRING BuiltinDomainName
;
73 extern PSID AccountDomainSid
;
74 extern UNICODE_STRING AccountDomainName
;
79 StartAuthenticationPort(VOID
);
83 LsapInitDatabase(VOID
);
86 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
87 IN LPWSTR ContainerName
,
89 IN LSA_DB_OBJECT_TYPE HandleType
,
90 IN ACCESS_MASK DesiredAccess
,
92 OUT PLSA_DB_OBJECT
*DbObject
);
95 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
96 IN LPWSTR ContainerName
,
98 IN LSA_DB_OBJECT_TYPE ObjectType
,
99 IN ACCESS_MASK DesiredAccess
,
101 OUT PLSA_DB_OBJECT
*DbObject
);
104 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
105 IN LSA_DB_OBJECT_TYPE HandleType
,
106 IN ACCESS_MASK GrantedAccess
,
107 OUT PLSA_DB_OBJECT
*DbObject
);
110 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
113 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
116 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
117 LPWSTR AttributeName
,
118 LPVOID AttributeData
,
119 PULONG AttributeSize
);
122 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
123 LPWSTR AttributeName
,
124 LPVOID AttributeData
,
125 ULONG AttributeSize
);
128 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject
,
129 LPWSTR AttributeName
);
136 LsapGetRelativeIdFromSid(PSID Sid
);
139 LsapLookupNames(DWORD Count
,
140 PRPC_UNICODE_STRING Names
,
141 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
142 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
143 LSAP_LOOKUP_LEVEL LookupLevel
,
146 DWORD ClientRevision
);
149 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
150 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
151 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
152 LSAP_LOOKUP_LEVEL LookupLevel
,
155 DWORD ClientRevision
);
159 LsarStartRpcServer(VOID
);
163 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
164 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
167 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
168 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
171 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
172 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
175 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
176 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
179 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
180 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
183 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
184 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
187 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
188 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
191 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
192 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
195 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
196 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
199 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
200 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
203 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
204 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
207 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
208 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
211 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
212 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
215 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
216 PPOLICY_AUDIT_LOG_INFO Info
);
219 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
220 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
223 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
224 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
227 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
228 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
231 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
232 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
235 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
236 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
239 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
240 PPOLICY_DEFAULT_QUOTA_INFO Info
);
243 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
244 PPOLICY_MODIFICATION_INFO Info
);
247 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
248 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
251 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
252 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
255 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
256 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
259 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
260 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
264 LsarpLookupPrivilegeName(PLUID Value
,
265 PRPC_UNICODE_STRING
*Name
);
268 LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name
,
272 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
273 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
274 DWORD PreferedMaximumLength
);
277 LsapLookupAccountRightName(ULONG RightValue
,
278 PRPC_UNICODE_STRING
*Name
);
282 LsapRegCloseKey(IN HANDLE KeyHandle
);
285 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
287 IN ACCESS_MASK DesiredAccess
,
288 OUT HANDLE KeyHandle
);
291 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
295 LsapRegDeleteKey(IN HANDLE KeyHandle
);
298 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
304 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
306 IN ACCESS_MASK DesiredAccess
,
307 OUT HANDLE KeyHandle
);
310 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
311 OUT PULONG SubKeyCount
,
312 OUT PULONG ValueCount
);
315 LsapRegDeleteValue(IN HANDLE KeyHandle
,
316 IN LPWSTR ValueName
);
319 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
322 IN OUT PULONG NameLength
,
323 OUT PULONG Type OPTIONAL
,
324 OUT PVOID Data OPTIONAL
,
325 IN OUT PULONG DataLength OPTIONAL
);
328 LsapRegQueryValue(IN HANDLE KeyHandle
,
330 OUT PULONG Type OPTIONAL
,
331 OUT LPVOID Data OPTIONAL
,
332 IN OUT PULONG DataLength OPTIONAL
);
335 LsapRegSetValue(IN HANDLE KeyHandle
,
339 IN ULONG DataLength
);
343 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
344 PULONG PolicySdSize
);
347 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
348 PULONG AccountSdSize
);
351 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
352 PULONG SecretSdSize
);