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
;
73 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority
;
74 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority
;
75 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority
;
76 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority
;
77 extern SID_IDENTIFIER_AUTHORITY NtAuthority
;
79 extern PSID BuiltinDomainSid
;
80 extern UNICODE_STRING BuiltinDomainName
;
81 extern PSID AccountDomainSid
;
82 extern UNICODE_STRING AccountDomainName
;
86 LsapInitAuthPackages(VOID
);
90 StartAuthenticationPort(VOID
);
94 LsapInitDatabase(VOID
);
97 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
98 IN LPWSTR ContainerName
,
100 IN LSA_DB_OBJECT_TYPE HandleType
,
101 IN ACCESS_MASK DesiredAccess
,
103 OUT PLSA_DB_OBJECT
*DbObject
);
106 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
107 IN LPWSTR ContainerName
,
108 IN LPWSTR ObjectName
,
109 IN LSA_DB_OBJECT_TYPE ObjectType
,
110 IN ACCESS_MASK DesiredAccess
,
112 OUT PLSA_DB_OBJECT
*DbObject
);
115 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
116 IN LSA_DB_OBJECT_TYPE HandleType
,
117 IN ACCESS_MASK GrantedAccess
,
118 OUT PLSA_DB_OBJECT
*DbObject
);
121 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
124 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
127 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
128 LPWSTR AttributeName
,
129 LPVOID AttributeData
,
130 PULONG AttributeSize
);
133 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
134 LPWSTR AttributeName
,
135 LPVOID AttributeData
,
136 ULONG AttributeSize
);
139 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject
,
140 LPWSTR AttributeName
);
147 LsapGetRelativeIdFromSid(PSID Sid
);
150 LsapLookupNames(DWORD Count
,
151 PRPC_UNICODE_STRING Names
,
152 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
153 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
154 LSAP_LOOKUP_LEVEL LookupLevel
,
157 DWORD ClientRevision
);
160 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
161 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
162 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
163 LSAP_LOOKUP_LEVEL LookupLevel
,
166 DWORD ClientRevision
);
170 LsarStartRpcServer(VOID
);
174 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
175 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
178 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
179 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
182 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
183 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
186 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
187 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
190 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
191 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
194 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
195 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
198 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
199 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
202 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
203 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
206 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
207 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
210 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
211 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
214 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
215 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
218 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
219 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
222 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
223 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
226 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
227 PPOLICY_AUDIT_LOG_INFO Info
);
230 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
231 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
234 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
235 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
238 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
239 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
242 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
243 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
246 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
247 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
250 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
251 PPOLICY_DEFAULT_QUOTA_INFO Info
);
254 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
255 PPOLICY_MODIFICATION_INFO Info
);
258 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
259 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
262 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
263 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
266 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
267 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
270 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
271 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
275 LsarpLookupPrivilegeName(PLUID Value
,
276 PRPC_UNICODE_STRING
*Name
);
279 LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name
,
283 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
284 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
285 DWORD PreferedMaximumLength
);
288 LsapLookupAccountRightName(ULONG RightValue
,
289 PRPC_UNICODE_STRING
*Name
);
293 LsapRegCloseKey(IN HANDLE KeyHandle
);
296 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
298 IN ACCESS_MASK DesiredAccess
,
299 OUT HANDLE KeyHandle
);
302 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
306 LsapRegDeleteKey(IN HANDLE KeyHandle
);
309 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
315 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
317 IN ACCESS_MASK DesiredAccess
,
318 OUT HANDLE KeyHandle
);
321 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
322 OUT PULONG SubKeyCount
,
323 OUT PULONG ValueCount
);
326 LsapRegDeleteValue(IN HANDLE KeyHandle
,
327 IN LPWSTR ValueName
);
330 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
333 IN OUT PULONG NameLength
,
334 OUT PULONG Type OPTIONAL
,
335 OUT PVOID Data OPTIONAL
,
336 IN OUT PULONG DataLength OPTIONAL
);
339 LsapRegQueryValue(IN HANDLE KeyHandle
,
341 OUT PULONG Type OPTIONAL
,
342 OUT LPVOID Data OPTIONAL
,
343 IN OUT PULONG DataLength OPTIONAL
);
346 LsapRegSetValue(IN HANDLE KeyHandle
,
350 IN ULONG DataLength
);
354 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
355 PULONG PolicySdSize
);
358 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
359 PULONG AccountSdSize
);
362 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
363 PULONG SecretSdSize
);