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/umfuncs.h>
31 //#include <ntsecapi.h>
39 #include <wine/debug.h>
42 typedef enum _LSA_DB_OBJECT_TYPE
49 } LSA_DB_OBJECT_TYPE
, *PLSA_DB_OBJECT_TYPE
;
51 typedef struct _LSA_DB_OBJECT
54 LSA_DB_OBJECT_TYPE ObjectType
;
59 struct _LSA_DB_OBJECT
*ParentObject
;
60 } LSA_DB_OBJECT
, *PLSA_DB_OBJECT
;
62 #define LSAP_DB_SIGNATURE 0x12345678
65 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
68 DWORD MaximumAuditEventCount
;
70 } LSAP_POLICY_AUDIT_EVENTS_DATA
, *PLSAP_POLICY_AUDIT_EVENTS_DATA
;
72 typedef struct _LSAP_LOGON_CONTEXT
75 HANDLE ClientProcessHandle
;
76 HANDLE ConnectionHandle
;
77 } LSAP_LOGON_CONTEXT
, *PLSAP_LOGON_CONTEXT
;
79 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority
;
80 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority
;
81 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority
;
82 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority
;
83 extern SID_IDENTIFIER_AUTHORITY NtAuthority
;
85 extern PSID BuiltinDomainSid
;
86 extern UNICODE_STRING BuiltinDomainName
;
87 extern PSID AccountDomainSid
;
88 extern UNICODE_STRING AccountDomainName
;
92 LsapInitAuthPackages(VOID
);
95 LsapLookupAuthenticationPackage(PLSA_API_MSG RequestMsg
,
96 PLSAP_LOGON_CONTEXT LogonContext
);
99 LsapCallAuthenticationPackage(PLSA_API_MSG RequestMsg
,
100 PLSAP_LOGON_CONTEXT LogonContext
);
103 LsapLogonUser(PLSA_API_MSG RequestMsg
,
104 PLSAP_LOGON_CONTEXT LogonContext
);
108 StartAuthenticationPort(VOID
);
112 LsapInitDatabase(VOID
);
115 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
116 IN LPWSTR ContainerName
,
117 IN LPWSTR ObjectName
,
118 IN LSA_DB_OBJECT_TYPE HandleType
,
119 IN ACCESS_MASK DesiredAccess
,
121 OUT PLSA_DB_OBJECT
*DbObject
);
124 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
125 IN LPWSTR ContainerName
,
126 IN LPWSTR ObjectName
,
127 IN LSA_DB_OBJECT_TYPE ObjectType
,
128 IN ACCESS_MASK DesiredAccess
,
130 OUT PLSA_DB_OBJECT
*DbObject
);
133 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
134 IN LSA_DB_OBJECT_TYPE HandleType
,
135 IN ACCESS_MASK GrantedAccess
,
136 OUT PLSA_DB_OBJECT
*DbObject
);
139 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
142 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
145 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
146 LPWSTR AttributeName
,
147 LPVOID AttributeData
,
148 PULONG AttributeSize
);
151 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
152 LPWSTR AttributeName
,
153 LPVOID AttributeData
,
154 ULONG AttributeSize
);
157 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject
,
158 LPWSTR AttributeName
);
165 LsapGetRelativeIdFromSid(PSID Sid
);
168 LsapLookupNames(DWORD Count
,
169 PRPC_UNICODE_STRING Names
,
170 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
171 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
172 LSAP_LOOKUP_LEVEL LookupLevel
,
175 DWORD ClientRevision
);
178 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
179 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
180 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
181 LSAP_LOOKUP_LEVEL LookupLevel
,
184 DWORD ClientRevision
);
188 LsarStartRpcServer(VOID
);
192 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
193 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
196 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
197 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
200 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
201 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
204 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
205 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
208 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
209 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
212 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
213 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
216 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
217 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
220 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
221 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
224 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
225 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
228 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
229 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
232 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
233 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
236 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
237 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
240 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
241 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
244 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
245 PPOLICY_AUDIT_LOG_INFO Info
);
248 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
249 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
252 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
253 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
256 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
257 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
260 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
261 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
264 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
265 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
268 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
269 PPOLICY_DEFAULT_QUOTA_INFO Info
);
272 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
273 PPOLICY_MODIFICATION_INFO Info
);
276 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
277 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
280 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
281 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
284 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
285 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
288 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
289 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
293 LsarpLookupPrivilegeName(PLUID Value
,
294 PRPC_UNICODE_STRING
*Name
);
297 LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name
,
301 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
302 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
303 DWORD PreferedMaximumLength
);
306 LsapLookupAccountRightName(ULONG RightValue
,
307 PRPC_UNICODE_STRING
*Name
);
311 LsapRegCloseKey(IN HANDLE KeyHandle
);
314 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
316 IN ACCESS_MASK DesiredAccess
,
317 OUT HANDLE KeyHandle
);
320 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
324 LsapRegDeleteKey(IN HANDLE KeyHandle
);
327 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
333 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
335 IN ACCESS_MASK DesiredAccess
,
336 OUT HANDLE KeyHandle
);
339 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
340 OUT PULONG SubKeyCount
,
341 OUT PULONG ValueCount
);
344 LsapRegDeleteValue(IN HANDLE KeyHandle
,
345 IN LPWSTR ValueName
);
348 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
351 IN OUT PULONG NameLength
,
352 OUT PULONG Type OPTIONAL
,
353 OUT PVOID Data OPTIONAL
,
354 IN OUT PULONG DataLength OPTIONAL
);
357 LsapRegQueryValue(IN HANDLE KeyHandle
,
359 OUT PULONG Type OPTIONAL
,
360 OUT LPVOID Data OPTIONAL
,
361 IN OUT PULONG DataLength OPTIONAL
);
364 LsapRegSetValue(IN HANDLE KeyHandle
,
368 IN ULONG DataLength
);
372 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
373 PULONG PolicySdSize
);
376 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
377 PULONG AccountSdSize
);
380 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
381 PULONG SecretSdSize
);