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 NTOS_MODE_USER
13 #include <ndk/cmfuncs.h>
14 #include <ndk/kefuncs.h>
15 #include <ndk/lpctypes.h>
16 #include <ndk/lpcfuncs.h>
17 #include <ndk/obfuncs.h>
18 #include <ndk/rtlfuncs.h>
19 #include <ndk/setypes.h>
31 #include <wine/debug.h>
34 typedef enum _LSA_DB_OBJECT_TYPE
41 } LSA_DB_OBJECT_TYPE
, *PLSA_DB_OBJECT_TYPE
;
43 typedef struct _LSA_DB_OBJECT
46 LSA_DB_OBJECT_TYPE ObjectType
;
50 struct _LSA_DB_OBJECT
*ParentObject
;
51 } LSA_DB_OBJECT
, *PLSA_DB_OBJECT
;
53 #define LSAP_DB_SIGNATURE 0x12345678
56 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
59 DWORD MaximumAuditEventCount
;
61 } LSAP_POLICY_AUDIT_EVENTS_DATA
, *PLSAP_POLICY_AUDIT_EVENTS_DATA
;
64 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority
;
65 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority
;
66 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority
;
67 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority
;
68 extern SID_IDENTIFIER_AUTHORITY NtAuthority
;
70 extern PSID BuiltinDomainSid
;
71 extern UNICODE_STRING BuiltinDomainName
;
72 extern PSID AccountDomainSid
;
73 extern UNICODE_STRING AccountDomainName
;
78 StartAuthenticationPort(VOID
);
82 LsapInitDatabase(VOID
);
85 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
86 IN LPWSTR ContainerName
,
88 IN LSA_DB_OBJECT_TYPE HandleType
,
89 IN ACCESS_MASK DesiredAccess
,
90 OUT PLSA_DB_OBJECT
*DbObject
);
93 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
94 IN LPWSTR ContainerName
,
96 IN LSA_DB_OBJECT_TYPE ObjectType
,
97 IN ACCESS_MASK DesiredAccess
,
98 OUT PLSA_DB_OBJECT
*DbObject
);
101 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
102 IN LSA_DB_OBJECT_TYPE HandleType
,
103 IN ACCESS_MASK GrantedAccess
,
104 OUT PLSA_DB_OBJECT
*DbObject
);
107 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
110 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
113 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
114 LPWSTR AttributeName
,
115 LPVOID AttributeData
,
116 PULONG AttributeSize
);
119 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
120 LPWSTR AttributeName
,
121 LPVOID AttributeData
,
122 ULONG AttributeSize
);
129 LsapGetRelativeIdFromSid(PSID Sid
);
132 LsapLookupNames(DWORD Count
,
133 PRPC_UNICODE_STRING Names
,
134 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
135 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
136 LSAP_LOOKUP_LEVEL LookupLevel
,
139 DWORD ClientRevision
);
142 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
143 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
144 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
145 LSAP_LOOKUP_LEVEL LookupLevel
,
148 DWORD ClientRevision
);
152 LsarStartRpcServer(VOID
);
156 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
157 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
160 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
161 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
164 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
165 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
168 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
169 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
172 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
173 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
176 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
177 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
180 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
181 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
184 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
185 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
188 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
189 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
192 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
193 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
196 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
197 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
200 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
201 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
204 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
205 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
208 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
209 PPOLICY_AUDIT_LOG_INFO Info
);
212 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
213 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
216 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
217 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
220 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
221 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
224 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
225 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
228 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
229 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
232 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
233 PPOLICY_DEFAULT_QUOTA_INFO Info
);
236 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
237 PPOLICY_MODIFICATION_INFO Info
);
240 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
241 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
244 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
245 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
248 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
249 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
252 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
253 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
257 LsarpLookupPrivilegeName(PLUID Value
,
258 PRPC_UNICODE_STRING
*Name
);
261 LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name
,
265 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
266 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
267 DWORD PreferedMaximumLength
);
270 LsapLookupAccountRightName(ULONG RightValue
,
271 PRPC_UNICODE_STRING
*Name
);
275 LsapRegCloseKey(IN HANDLE KeyHandle
);
278 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
280 IN ACCESS_MASK DesiredAccess
,
281 OUT HANDLE KeyHandle
);
284 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
288 LsapRegDeleteKey(IN HANDLE KeyHandle
);
291 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
297 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
299 IN ACCESS_MASK DesiredAccess
,
300 OUT HANDLE KeyHandle
);
303 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
304 OUT PULONG SubKeyCount
,
305 OUT PULONG ValueCount
);
308 LsapRegDeleteValue(IN HANDLE KeyHandle
,
309 IN LPWSTR ValueName
);
312 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
315 IN OUT PULONG NameLength
,
316 OUT PULONG Type OPTIONAL
,
317 OUT PVOID Data OPTIONAL
,
318 IN OUT PULONG DataLength OPTIONAL
);
321 LsapRegQueryValue(IN HANDLE KeyHandle
,
323 OUT PULONG Type OPTIONAL
,
324 OUT LPVOID Data OPTIONAL
,
325 IN OUT PULONG DataLength OPTIONAL
);
328 LsapRegSetValue(IN HANDLE KeyHandle
,
332 IN ULONG DataLength
);
336 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
337 PULONG PolicySdSize
);
340 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
341 PULONG AccountSdSize
);
344 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
345 PULONG SecretSdSize
);