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
12 #define WIN32_NO_STATUS
14 #define COM_NO_WINDOWS_H
21 #define NTOS_MODE_USER
22 #include <ndk/cmfuncs.h>
23 #include <ndk/kefuncs.h>
24 #include <ndk/lpctypes.h>
25 #include <ndk/lpcfuncs.h>
26 #include <ndk/mmfuncs.h>
27 #include <ndk/obfuncs.h>
28 #include <ndk/psfuncs.h>
29 #include <ndk/rtlfuncs.h>
30 #include <ndk/setypes.h>
31 #include <ndk/sefuncs.h>
32 #include <ndk/umfuncs.h>
41 #include <wine/debug.h>
42 WINE_DEFAULT_DEBUG_CHANNEL(lsasrv
);
44 #include "resources.h"
46 typedef enum _LSA_DB_OBJECT_TYPE
53 } LSA_DB_OBJECT_TYPE
, *PLSA_DB_OBJECT_TYPE
;
55 typedef struct _LSA_DB_OBJECT
58 LSA_DB_OBJECT_TYPE ObjectType
;
63 struct _LSA_DB_OBJECT
*ParentObject
;
64 } LSA_DB_OBJECT
, *PLSA_DB_OBJECT
;
66 #define LSAP_DB_SIGNATURE 0x12345678
69 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
72 DWORD MaximumAuditEventCount
;
74 } LSAP_POLICY_AUDIT_EVENTS_DATA
, *PLSAP_POLICY_AUDIT_EVENTS_DATA
;
76 typedef struct _LSAP_LOGON_CONTEXT
79 HANDLE ClientProcessHandle
;
80 HANDLE ConnectionHandle
;
81 } LSAP_LOGON_CONTEXT
, *PLSAP_LOGON_CONTEXT
;
83 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority
;
84 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority
;
85 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority
;
86 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority
;
87 extern SID_IDENTIFIER_AUTHORITY NtAuthority
;
89 extern PSID BuiltinDomainSid
;
90 extern UNICODE_STRING BuiltinDomainName
;
91 extern PSID AccountDomainSid
;
92 extern UNICODE_STRING AccountDomainName
;
96 LsapInitAuthPackages(VOID
);
99 LsapLookupAuthenticationPackage(PLSA_API_MSG RequestMsg
,
100 PLSAP_LOGON_CONTEXT LogonContext
);
103 LsapCallAuthenticationPackage(PLSA_API_MSG RequestMsg
,
104 PLSAP_LOGON_CONTEXT LogonContext
);
107 LsapLogonUser(PLSA_API_MSG RequestMsg
,
108 PLSAP_LOGON_CONTEXT LogonContext
);
112 StartAuthenticationPort(VOID
);
116 LsapInitDatabase(VOID
);
119 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
120 IN LPWSTR ContainerName
,
121 IN LPWSTR ObjectName
,
122 IN LSA_DB_OBJECT_TYPE HandleType
,
123 IN ACCESS_MASK DesiredAccess
,
125 OUT PLSA_DB_OBJECT
*DbObject
);
128 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
129 IN LPWSTR ContainerName
,
130 IN LPWSTR ObjectName
,
131 IN LSA_DB_OBJECT_TYPE ObjectType
,
132 IN ACCESS_MASK DesiredAccess
,
134 OUT PLSA_DB_OBJECT
*DbObject
);
137 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
138 IN LSA_DB_OBJECT_TYPE HandleType
,
139 IN ACCESS_MASK GrantedAccess
,
140 OUT PLSA_DB_OBJECT
*DbObject
);
143 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
146 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
149 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
150 LPWSTR AttributeName
,
151 LPVOID AttributeData
,
152 PULONG AttributeSize
);
155 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
156 LPWSTR AttributeName
,
157 LPVOID AttributeData
,
158 ULONG AttributeSize
);
161 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject
,
162 LPWSTR AttributeName
);
169 LsapGetRelativeIdFromSid(PSID Sid
);
172 LsapLookupNames(DWORD Count
,
173 PRPC_UNICODE_STRING Names
,
174 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
175 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
176 LSAP_LOOKUP_LEVEL LookupLevel
,
179 DWORD ClientRevision
);
182 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
183 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
184 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
185 LSAP_LOOKUP_LEVEL LookupLevel
,
188 DWORD ClientRevision
);
192 LsarStartRpcServer(VOID
);
196 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
197 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
200 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
201 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
204 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
205 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
208 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
209 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
212 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
213 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
216 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
217 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
220 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
221 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
224 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
225 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
228 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
229 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
232 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
233 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
236 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
237 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
240 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
241 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
244 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
245 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
248 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
249 PPOLICY_AUDIT_LOG_INFO Info
);
252 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
253 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
256 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
257 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
260 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
261 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
264 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
265 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
268 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
269 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
272 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
273 PPOLICY_DEFAULT_QUOTA_INFO Info
);
276 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
277 PPOLICY_MODIFICATION_INFO Info
);
280 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
281 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
284 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
285 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
288 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
289 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
292 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
293 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
297 LsarpLookupPrivilegeName(PLUID Value
,
298 PRPC_UNICODE_STRING
*Name
);
301 LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name
,
305 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
306 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
307 DWORD PreferedMaximumLength
);
310 LsapLookupAccountRightName(ULONG RightValue
,
311 PRPC_UNICODE_STRING
*Name
);
315 LsapRegCloseKey(IN HANDLE KeyHandle
);
318 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
320 IN ACCESS_MASK DesiredAccess
,
321 OUT HANDLE KeyHandle
);
324 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
328 LsapRegDeleteKey(IN HANDLE KeyHandle
);
331 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
337 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
339 IN ACCESS_MASK DesiredAccess
,
340 OUT HANDLE KeyHandle
);
343 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
344 OUT PULONG SubKeyCount
,
345 OUT PULONG ValueCount
);
348 LsapRegDeleteValue(IN HANDLE KeyHandle
,
349 IN LPWSTR ValueName
);
352 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
355 IN OUT PULONG NameLength
,
356 OUT PULONG Type OPTIONAL
,
357 OUT PVOID Data OPTIONAL
,
358 IN OUT PULONG DataLength OPTIONAL
);
361 LsapRegQueryValue(IN HANDLE KeyHandle
,
363 OUT PULONG Type OPTIONAL
,
364 OUT LPVOID Data OPTIONAL
,
365 IN OUT PULONG DataLength OPTIONAL
);
368 LsapRegSetValue(IN HANDLE KeyHandle
,
372 IN ULONG DataLength
);
376 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
377 PULONG PolicySdSize
);
380 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
381 PULONG AccountSdSize
);
384 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
385 PULONG SecretSdSize
);
389 LsapInitLogonSessions(VOID
);
393 LsapCreateLogonSession(IN PLUID LogonId
);
397 LsapDeleteLogonSession(IN PLUID LogonId
);
401 LsapLoadString(HINSTANCE hInstance
,