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 COM_NO_WINDOWS_H
17 #define NTOS_MODE_USER
18 #include <ndk/cmfuncs.h>
19 #include <ndk/kefuncs.h>
20 #include <ndk/lpctypes.h>
21 #include <ndk/lpcfuncs.h>
22 #include <ndk/mmfuncs.h>
23 #include <ndk/obfuncs.h>
24 #include <ndk/psfuncs.h>
25 #include <ndk/rtlfuncs.h>
26 #include <ndk/setypes.h>
27 #include <ndk/sefuncs.h>
28 #include <ndk/umfuncs.h>
32 //#include <ntsecapi.h>
40 #include <wine/debug.h>
43 typedef enum _LSA_DB_OBJECT_TYPE
50 } LSA_DB_OBJECT_TYPE
, *PLSA_DB_OBJECT_TYPE
;
52 typedef struct _LSA_DB_OBJECT
55 LSA_DB_OBJECT_TYPE ObjectType
;
60 struct _LSA_DB_OBJECT
*ParentObject
;
61 } LSA_DB_OBJECT
, *PLSA_DB_OBJECT
;
63 #define LSAP_DB_SIGNATURE 0x12345678
66 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
69 DWORD MaximumAuditEventCount
;
71 } LSAP_POLICY_AUDIT_EVENTS_DATA
, *PLSAP_POLICY_AUDIT_EVENTS_DATA
;
73 typedef struct _LSAP_LOGON_CONTEXT
76 HANDLE ClientProcessHandle
;
77 HANDLE ConnectionHandle
;
78 } LSAP_LOGON_CONTEXT
, *PLSAP_LOGON_CONTEXT
;
80 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority
;
81 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority
;
82 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority
;
83 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority
;
84 extern SID_IDENTIFIER_AUTHORITY NtAuthority
;
86 extern PSID BuiltinDomainSid
;
87 extern UNICODE_STRING BuiltinDomainName
;
88 extern PSID AccountDomainSid
;
89 extern UNICODE_STRING AccountDomainName
;
93 LsapInitAuthPackages(VOID
);
96 LsapLookupAuthenticationPackage(PLSA_API_MSG RequestMsg
,
97 PLSAP_LOGON_CONTEXT LogonContext
);
100 LsapCallAuthenticationPackage(PLSA_API_MSG RequestMsg
,
101 PLSAP_LOGON_CONTEXT LogonContext
);
104 LsapLogonUser(PLSA_API_MSG RequestMsg
,
105 PLSAP_LOGON_CONTEXT LogonContext
);
109 StartAuthenticationPort(VOID
);
113 LsapInitDatabase(VOID
);
116 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
117 IN LPWSTR ContainerName
,
118 IN LPWSTR ObjectName
,
119 IN LSA_DB_OBJECT_TYPE HandleType
,
120 IN ACCESS_MASK DesiredAccess
,
122 OUT PLSA_DB_OBJECT
*DbObject
);
125 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
126 IN LPWSTR ContainerName
,
127 IN LPWSTR ObjectName
,
128 IN LSA_DB_OBJECT_TYPE ObjectType
,
129 IN ACCESS_MASK DesiredAccess
,
131 OUT PLSA_DB_OBJECT
*DbObject
);
134 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
135 IN LSA_DB_OBJECT_TYPE HandleType
,
136 IN ACCESS_MASK GrantedAccess
,
137 OUT PLSA_DB_OBJECT
*DbObject
);
140 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
143 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
146 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
147 LPWSTR AttributeName
,
148 LPVOID AttributeData
,
149 PULONG AttributeSize
);
152 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
153 LPWSTR AttributeName
,
154 LPVOID AttributeData
,
155 ULONG AttributeSize
);
158 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject
,
159 LPWSTR AttributeName
);
166 LsapGetRelativeIdFromSid(PSID Sid
);
169 LsapLookupNames(DWORD Count
,
170 PRPC_UNICODE_STRING Names
,
171 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
172 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
173 LSAP_LOOKUP_LEVEL LookupLevel
,
176 DWORD ClientRevision
);
179 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
180 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
181 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
182 LSAP_LOOKUP_LEVEL LookupLevel
,
185 DWORD ClientRevision
);
189 LsarStartRpcServer(VOID
);
193 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
194 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
197 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
198 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
201 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
202 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
205 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
206 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
209 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
210 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
213 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
214 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
217 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
218 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
221 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
222 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
225 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
226 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
229 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
230 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
233 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
234 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
237 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
238 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
241 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
242 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
245 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
246 PPOLICY_AUDIT_LOG_INFO Info
);
249 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
250 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
253 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
254 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
257 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
258 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
261 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
262 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
265 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
266 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
269 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
270 PPOLICY_DEFAULT_QUOTA_INFO Info
);
273 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
274 PPOLICY_MODIFICATION_INFO Info
);
277 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
278 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
281 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
282 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
285 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
286 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
289 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
290 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
294 LsarpLookupPrivilegeName(PLUID Value
,
295 PRPC_UNICODE_STRING
*Name
);
298 LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name
,
302 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
303 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
304 DWORD PreferedMaximumLength
);
307 LsapLookupAccountRightName(ULONG RightValue
,
308 PRPC_UNICODE_STRING
*Name
);
312 LsapRegCloseKey(IN HANDLE KeyHandle
);
315 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
317 IN ACCESS_MASK DesiredAccess
,
318 OUT HANDLE KeyHandle
);
321 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
325 LsapRegDeleteKey(IN HANDLE KeyHandle
);
328 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
334 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
336 IN ACCESS_MASK DesiredAccess
,
337 OUT HANDLE KeyHandle
);
340 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
341 OUT PULONG SubKeyCount
,
342 OUT PULONG ValueCount
);
345 LsapRegDeleteValue(IN HANDLE KeyHandle
,
346 IN LPWSTR ValueName
);
349 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
352 IN OUT PULONG NameLength
,
353 OUT PULONG Type OPTIONAL
,
354 OUT PVOID Data OPTIONAL
,
355 IN OUT PULONG DataLength OPTIONAL
);
358 LsapRegQueryValue(IN HANDLE KeyHandle
,
360 OUT PULONG Type OPTIONAL
,
361 OUT LPVOID Data OPTIONAL
,
362 IN OUT PULONG DataLength OPTIONAL
);
365 LsapRegSetValue(IN HANDLE KeyHandle
,
369 IN ULONG DataLength
);
373 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
374 PULONG PolicySdSize
);
377 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
378 PULONG AccountSdSize
);
381 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
382 PULONG SecretSdSize
);