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
18 #define NTOS_MODE_USER
19 #include <ndk/cmfuncs.h>
20 #include <ndk/kefuncs.h>
21 #include <ndk/lpctypes.h>
22 #include <ndk/lpcfuncs.h>
23 #include <ndk/mmfuncs.h>
24 #include <ndk/obfuncs.h>
25 #include <ndk/psfuncs.h>
26 #include <ndk/rtlfuncs.h>
27 #include <ndk/setypes.h>
28 #include <ndk/sefuncs.h>
29 #include <ndk/umfuncs.h>
33 //#include <ntsecapi.h>
41 #include <wine/debug.h>
43 #include "resources.h"
45 typedef enum _LSA_DB_OBJECT_TYPE
52 } LSA_DB_OBJECT_TYPE
, *PLSA_DB_OBJECT_TYPE
;
54 typedef struct _LSA_DB_OBJECT
57 LSA_DB_OBJECT_TYPE ObjectType
;
62 struct _LSA_DB_OBJECT
*ParentObject
;
63 } LSA_DB_OBJECT
, *PLSA_DB_OBJECT
;
65 #define LSAP_DB_SIGNATURE 0x12345678
68 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
71 DWORD MaximumAuditEventCount
;
73 } LSAP_POLICY_AUDIT_EVENTS_DATA
, *PLSAP_POLICY_AUDIT_EVENTS_DATA
;
75 typedef struct _LSAP_LOGON_CONTEXT
78 HANDLE ClientProcessHandle
;
79 HANDLE ConnectionHandle
;
80 } LSAP_LOGON_CONTEXT
, *PLSAP_LOGON_CONTEXT
;
82 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority
;
83 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority
;
84 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority
;
85 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority
;
86 extern SID_IDENTIFIER_AUTHORITY NtAuthority
;
88 extern PSID BuiltinDomainSid
;
89 extern UNICODE_STRING BuiltinDomainName
;
90 extern PSID AccountDomainSid
;
91 extern UNICODE_STRING AccountDomainName
;
95 LsapInitAuthPackages(VOID
);
98 LsapLookupAuthenticationPackage(PLSA_API_MSG RequestMsg
,
99 PLSAP_LOGON_CONTEXT LogonContext
);
102 LsapCallAuthenticationPackage(PLSA_API_MSG RequestMsg
,
103 PLSAP_LOGON_CONTEXT LogonContext
);
106 LsapLogonUser(PLSA_API_MSG RequestMsg
,
107 PLSAP_LOGON_CONTEXT LogonContext
);
111 StartAuthenticationPort(VOID
);
115 LsapInitDatabase(VOID
);
118 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
119 IN LPWSTR ContainerName
,
120 IN LPWSTR ObjectName
,
121 IN LSA_DB_OBJECT_TYPE HandleType
,
122 IN ACCESS_MASK DesiredAccess
,
124 OUT PLSA_DB_OBJECT
*DbObject
);
127 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
128 IN LPWSTR ContainerName
,
129 IN LPWSTR ObjectName
,
130 IN LSA_DB_OBJECT_TYPE ObjectType
,
131 IN ACCESS_MASK DesiredAccess
,
133 OUT PLSA_DB_OBJECT
*DbObject
);
136 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
137 IN LSA_DB_OBJECT_TYPE HandleType
,
138 IN ACCESS_MASK GrantedAccess
,
139 OUT PLSA_DB_OBJECT
*DbObject
);
142 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
145 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
148 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
149 LPWSTR AttributeName
,
150 LPVOID AttributeData
,
151 PULONG AttributeSize
);
154 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
155 LPWSTR AttributeName
,
156 LPVOID AttributeData
,
157 ULONG AttributeSize
);
160 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject
,
161 LPWSTR AttributeName
);
168 LsapGetRelativeIdFromSid(PSID Sid
);
171 LsapLookupNames(DWORD Count
,
172 PRPC_UNICODE_STRING Names
,
173 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
174 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
175 LSAP_LOOKUP_LEVEL LookupLevel
,
178 DWORD ClientRevision
);
181 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
182 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
183 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
184 LSAP_LOOKUP_LEVEL LookupLevel
,
187 DWORD ClientRevision
);
191 LsarStartRpcServer(VOID
);
195 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
196 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
199 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
200 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
203 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
204 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
207 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
208 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
211 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
212 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
215 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
216 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
219 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
220 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
223 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
224 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
227 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
228 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
231 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
232 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
235 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
236 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
239 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
240 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
243 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
244 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
247 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
248 PPOLICY_AUDIT_LOG_INFO Info
);
251 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
252 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
255 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
256 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
259 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
260 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
263 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
264 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
267 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
268 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
271 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
272 PPOLICY_DEFAULT_QUOTA_INFO Info
);
275 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
276 PPOLICY_MODIFICATION_INFO Info
);
279 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
280 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
283 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
284 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
287 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
288 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
291 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
292 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
296 LsarpLookupPrivilegeName(PLUID Value
,
297 PRPC_UNICODE_STRING
*Name
);
300 LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name
,
304 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
305 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
306 DWORD PreferedMaximumLength
);
309 LsapLookupAccountRightName(ULONG RightValue
,
310 PRPC_UNICODE_STRING
*Name
);
314 LsapRegCloseKey(IN HANDLE KeyHandle
);
317 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
319 IN ACCESS_MASK DesiredAccess
,
320 OUT HANDLE KeyHandle
);
323 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
327 LsapRegDeleteKey(IN HANDLE KeyHandle
);
330 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
336 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
338 IN ACCESS_MASK DesiredAccess
,
339 OUT HANDLE KeyHandle
);
342 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
343 OUT PULONG SubKeyCount
,
344 OUT PULONG ValueCount
);
347 LsapRegDeleteValue(IN HANDLE KeyHandle
,
348 IN LPWSTR ValueName
);
351 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
354 IN OUT PULONG NameLength
,
355 OUT PULONG Type OPTIONAL
,
356 OUT PVOID Data OPTIONAL
,
357 IN OUT PULONG DataLength OPTIONAL
);
360 LsapRegQueryValue(IN HANDLE KeyHandle
,
362 OUT PULONG Type OPTIONAL
,
363 OUT LPVOID Data OPTIONAL
,
364 IN OUT PULONG DataLength OPTIONAL
);
367 LsapRegSetValue(IN HANDLE KeyHandle
,
371 IN ULONG DataLength
);
375 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
376 PULONG PolicySdSize
);
379 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
380 PULONG AccountSdSize
);
383 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
384 PULONG SecretSdSize
);
388 LsapInitLogonSessions(VOID
);
392 LsapCreateLogonSession(IN PLUID LogonId
);
396 LsapDeleteLogonSession(IN PLUID LogonId
);
400 LsapLoadString(HINSTANCE hInstance
,