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/obfuncs.h>
23 #include <ndk/rtlfuncs.h>
24 #include <ndk/setypes.h>
28 //#include <ntsecapi.h>
36 #include <wine/debug.h>
39 typedef enum _LSA_DB_OBJECT_TYPE
46 } LSA_DB_OBJECT_TYPE
, *PLSA_DB_OBJECT_TYPE
;
48 typedef struct _LSA_DB_OBJECT
51 LSA_DB_OBJECT_TYPE ObjectType
;
56 struct _LSA_DB_OBJECT
*ParentObject
;
57 } LSA_DB_OBJECT
, *PLSA_DB_OBJECT
;
59 #define LSAP_DB_SIGNATURE 0x12345678
62 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
65 DWORD MaximumAuditEventCount
;
67 } LSAP_POLICY_AUDIT_EVENTS_DATA
, *PLSAP_POLICY_AUDIT_EVENTS_DATA
;
70 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority
;
71 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority
;
72 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority
;
73 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority
;
74 extern SID_IDENTIFIER_AUTHORITY NtAuthority
;
76 extern PSID BuiltinDomainSid
;
77 extern UNICODE_STRING BuiltinDomainName
;
78 extern PSID AccountDomainSid
;
79 extern UNICODE_STRING AccountDomainName
;
84 StartAuthenticationPort(VOID
);
88 LsapInitDatabase(VOID
);
91 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
92 IN LPWSTR ContainerName
,
94 IN LSA_DB_OBJECT_TYPE HandleType
,
95 IN ACCESS_MASK DesiredAccess
,
97 OUT PLSA_DB_OBJECT
*DbObject
);
100 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
101 IN LPWSTR ContainerName
,
102 IN LPWSTR ObjectName
,
103 IN LSA_DB_OBJECT_TYPE ObjectType
,
104 IN ACCESS_MASK DesiredAccess
,
106 OUT PLSA_DB_OBJECT
*DbObject
);
109 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
110 IN LSA_DB_OBJECT_TYPE HandleType
,
111 IN ACCESS_MASK GrantedAccess
,
112 OUT PLSA_DB_OBJECT
*DbObject
);
115 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
118 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
121 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
122 LPWSTR AttributeName
,
123 LPVOID AttributeData
,
124 PULONG AttributeSize
);
127 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
128 LPWSTR AttributeName
,
129 LPVOID AttributeData
,
130 ULONG AttributeSize
);
133 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject
,
134 LPWSTR AttributeName
);
141 LsapGetRelativeIdFromSid(PSID Sid
);
144 LsapLookupNames(DWORD Count
,
145 PRPC_UNICODE_STRING Names
,
146 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
147 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
148 LSAP_LOOKUP_LEVEL LookupLevel
,
151 DWORD ClientRevision
);
154 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
155 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
156 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
157 LSAP_LOOKUP_LEVEL LookupLevel
,
160 DWORD ClientRevision
);
164 LsarStartRpcServer(VOID
);
168 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
169 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
172 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
173 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
176 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
177 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
180 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
181 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
184 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
185 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
188 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
189 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
192 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
193 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
196 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
197 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
200 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
201 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
204 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
205 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
208 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
209 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
212 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
213 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
216 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
217 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
220 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
221 PPOLICY_AUDIT_LOG_INFO Info
);
224 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
225 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
228 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
229 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
232 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
233 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
236 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
237 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
240 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
241 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
244 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
245 PPOLICY_DEFAULT_QUOTA_INFO Info
);
248 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
249 PPOLICY_MODIFICATION_INFO Info
);
252 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
253 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
256 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
257 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
260 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
261 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
264 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
265 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
269 LsarpLookupPrivilegeName(PLUID Value
,
270 PRPC_UNICODE_STRING
*Name
);
273 LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name
,
277 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
278 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
279 DWORD PreferedMaximumLength
);
282 LsapLookupAccountRightName(ULONG RightValue
,
283 PRPC_UNICODE_STRING
*Name
);
287 LsapRegCloseKey(IN HANDLE KeyHandle
);
290 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
292 IN ACCESS_MASK DesiredAccess
,
293 OUT HANDLE KeyHandle
);
296 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
300 LsapRegDeleteKey(IN HANDLE KeyHandle
);
303 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
309 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
311 IN ACCESS_MASK DesiredAccess
,
312 OUT HANDLE KeyHandle
);
315 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
316 OUT PULONG SubKeyCount
,
317 OUT PULONG ValueCount
);
320 LsapRegDeleteValue(IN HANDLE KeyHandle
,
321 IN LPWSTR ValueName
);
324 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
327 IN OUT PULONG NameLength
,
328 OUT PULONG Type OPTIONAL
,
329 OUT PVOID Data OPTIONAL
,
330 IN OUT PULONG DataLength OPTIONAL
);
333 LsapRegQueryValue(IN HANDLE KeyHandle
,
335 OUT PULONG Type OPTIONAL
,
336 OUT LPVOID Data OPTIONAL
,
337 IN OUT PULONG DataLength OPTIONAL
);
340 LsapRegSetValue(IN HANDLE KeyHandle
,
344 IN ULONG DataLength
);
348 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
349 PULONG PolicySdSize
);
352 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
353 PULONG AccountSdSize
);
356 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
357 PULONG SecretSdSize
);