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
15 #define WIN32_NO_STATUS
17 #define COM_NO_WINDOWS_H
23 #define NTOS_MODE_USER
24 #include <ndk/cmfuncs.h>
25 #include <ndk/exfuncs.h>
26 #include <ndk/kefuncs.h>
27 #include <ndk/mmfuncs.h>
28 #include <ndk/obfuncs.h>
29 #include <ndk/psfuncs.h>
30 #include <ndk/rtlfuncs.h>
31 #include <ndk/setypes.h>
42 #include <wine/debug.h>
43 WINE_DEFAULT_DEBUG_CHANNEL(lsasrv
);
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
67 #define POLICY_AUDIT_EVENT_TYPE_COUNT (AuditCategoryAccountLogon - AuditCategorySystem + 1)
68 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
71 DWORD AuditEvents
[POLICY_AUDIT_EVENT_TYPE_COUNT
];
72 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
;
93 extern PSID LsapWorldSid
;
94 extern PSID LsapNetworkSid
;
95 extern PSID LsapBatchSid
;
96 extern PSID LsapInteractiveSid
;
97 extern PSID LsapServiceSid
;
98 extern PSID LsapLocalSystemSid
;
99 extern PSID LsapAdministratorsSid
;
104 LsapInitAuthPackages(VOID
);
107 LsapLookupAuthenticationPackage(PLSA_API_MSG RequestMsg
,
108 PLSAP_LOGON_CONTEXT LogonContext
);
111 LsapCallAuthenticationPackage(PLSA_API_MSG RequestMsg
,
112 PLSAP_LOGON_CONTEXT LogonContext
);
115 LsapLogonUser(PLSA_API_MSG RequestMsg
,
116 PLSAP_LOGON_CONTEXT LogonContext
);
120 StartAuthenticationPort(VOID
);
124 LsapInitDatabase(VOID
);
127 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
128 IN LPWSTR ContainerName
,
129 IN LPWSTR ObjectName
,
130 IN LSA_DB_OBJECT_TYPE HandleType
,
131 IN ACCESS_MASK DesiredAccess
,
133 OUT PLSA_DB_OBJECT
*DbObject
);
136 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
137 IN LPWSTR ContainerName
,
138 IN LPWSTR ObjectName
,
139 IN LSA_DB_OBJECT_TYPE ObjectType
,
140 IN ACCESS_MASK DesiredAccess
,
142 OUT PLSA_DB_OBJECT
*DbObject
);
145 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
146 IN LSA_DB_OBJECT_TYPE HandleType
,
147 IN ACCESS_MASK GrantedAccess
,
148 OUT PLSA_DB_OBJECT
*DbObject
);
151 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
154 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
157 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
158 LPWSTR AttributeName
,
159 LPVOID AttributeData
,
160 PULONG AttributeSize
);
163 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
164 LPWSTR AttributeName
,
165 LPVOID AttributeData
,
166 ULONG AttributeSize
);
169 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject
,
170 LPWSTR AttributeName
);
181 LsapGetRelativeIdFromSid(PSID Sid
);
184 LsapLookupNames(DWORD Count
,
185 PRPC_UNICODE_STRING Names
,
186 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
187 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
188 LSAP_LOOKUP_LEVEL LookupLevel
,
191 DWORD ClientRevision
);
194 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
195 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
196 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
197 LSAP_LOOKUP_LEVEL LookupLevel
,
200 DWORD ClientRevision
);
204 LsarStartRpcServer(VOID
);
208 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
209 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
212 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
213 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
216 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
217 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
220 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
221 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
224 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
225 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
228 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
229 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
232 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
233 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
236 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
237 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
240 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
241 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
244 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
245 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
248 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
249 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
252 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
253 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
256 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
257 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
260 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
261 PPOLICY_AUDIT_LOG_INFO Info
);
264 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
265 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
268 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
269 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
272 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
273 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
276 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
277 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
280 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
281 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
284 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
285 PPOLICY_DEFAULT_QUOTA_INFO Info
);
288 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
289 PPOLICY_MODIFICATION_INFO Info
);
292 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
293 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
296 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
297 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
300 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
301 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
304 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
305 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
309 LsarpLookupPrivilegeName(PLUID Value
,
310 PRPC_UNICODE_STRING
*Name
);
313 LsarpLookupPrivilegeDisplayName(PRPC_UNICODE_STRING Name
,
314 USHORT ClientLanguage
,
315 USHORT ClientSystemDefaultLanguage
,
316 PRPC_UNICODE_STRING
*DisplayName
,
317 USHORT
*LanguageReturned
);
320 LsarpLookupPrivilegeValue(
321 IN PRPC_UNICODE_STRING Name
);
324 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
325 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
326 DWORD PreferedMaximumLength
);
329 LsapLookupAccountRightName(ULONG RightValue
,
330 PRPC_UNICODE_STRING
*Name
);
333 LsapLookupAccountRightValue(
334 IN PRPC_UNICODE_STRING Name
);
338 LsapRegCloseKey(IN HANDLE KeyHandle
);
341 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
343 IN ACCESS_MASK DesiredAccess
,
344 OUT HANDLE KeyHandle
);
347 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
351 LsapRegDeleteKey(IN HANDLE KeyHandle
);
354 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
360 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
362 IN ACCESS_MASK DesiredAccess
,
363 OUT HANDLE KeyHandle
);
366 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
367 OUT PULONG SubKeyCount
,
368 OUT PULONG MaxSubKeyNameLength
,
369 OUT PULONG ValueCount
);
372 LsapRegDeleteValue(IN HANDLE KeyHandle
,
373 IN LPWSTR ValueName
);
376 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
379 IN OUT PULONG NameLength
,
380 OUT PULONG Type OPTIONAL
,
381 OUT PVOID Data OPTIONAL
,
382 IN OUT PULONG DataLength OPTIONAL
);
385 LsapRegQueryValue(IN HANDLE KeyHandle
,
387 OUT PULONG Type OPTIONAL
,
388 OUT LPVOID Data OPTIONAL
,
389 IN OUT PULONG DataLength OPTIONAL
);
392 LsapRegSetValue(IN HANDLE KeyHandle
,
396 IN ULONG DataLength
);
400 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
401 PULONG PolicySdSize
);
404 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
405 PULONG AccountSdSize
);
408 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
409 PULONG SecretSdSize
);
413 LsapInitLogonSessions(VOID
);
417 LsapCreateLogonSession(IN PLUID LogonId
);
421 LsapDeleteLogonSession(IN PLUID LogonId
);
427 _In_ ULONG AuthenticationPackage
,
428 _In_ PLSA_STRING PrimaryKeyValue
,
429 _In_ PLSA_STRING Credential
);
435 _In_ ULONG AuthenticationPackage
,
436 _Inout_ PULONG QueryContext
,
437 _In_ BOOLEAN RetrieveAllCredentials
,
438 _Inout_ PLSA_STRING PrimaryKeyValue
,
439 _Out_ PULONG PrimaryKeyLength
,
440 _Out_ PLSA_STRING Credentials
);
444 LsapDeleteCredential(
446 _In_ ULONG AuthenticationPackage
,
447 _In_ PLSA_STRING PrimaryKeyValue
);
450 LsapSetLogonSessionData(IN PLUID LogonId
);
453 LsapEnumLogonSessions(IN OUT PLSA_API_MSG RequestMsg
);
456 LsapGetLogonSessionData(IN OUT PLSA_API_MSG RequestMsg
);
460 LsapRmInitializeServer(VOID
);
463 LsapRmCreateLogonSession(
467 LsapRmDeleteLogonSession(
472 LsapLoadString(HINSTANCE hInstance
,
482 #endif /* _LSASRV_H */