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 typedef struct _SAMPR_ULONG_ARRAY
85 unsigned long *Element
;
86 } SAMPR_ULONG_ARRAY
, *PSAMPR_ULONG_ARRAY
;
88 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority
;
89 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority
;
90 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority
;
91 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority
;
92 extern SID_IDENTIFIER_AUTHORITY NtAuthority
;
94 extern PSID BuiltinDomainSid
;
95 extern UNICODE_STRING BuiltinDomainName
;
96 extern PSID AccountDomainSid
;
97 extern UNICODE_STRING AccountDomainName
;
99 extern PSID LsapWorldSid
;
100 extern PSID LsapNetworkSid
;
101 extern PSID LsapBatchSid
;
102 extern PSID LsapInteractiveSid
;
103 extern PSID LsapServiceSid
;
104 extern PSID LsapLocalSystemSid
;
105 extern PSID LsapAdministratorsSid
;
110 LsapInitAuthPackages(VOID
);
113 LsapLookupAuthenticationPackage(PLSA_API_MSG RequestMsg
,
114 PLSAP_LOGON_CONTEXT LogonContext
);
117 LsapCallAuthenticationPackage(PLSA_API_MSG RequestMsg
,
118 PLSAP_LOGON_CONTEXT LogonContext
);
121 LsapLogonUser(PLSA_API_MSG RequestMsg
,
122 PLSAP_LOGON_CONTEXT LogonContext
);
126 StartAuthenticationPort(VOID
);
130 LsapInitDatabase(VOID
);
133 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
134 IN LPWSTR ContainerName
,
135 IN LPWSTR ObjectName
,
136 IN LSA_DB_OBJECT_TYPE HandleType
,
137 IN ACCESS_MASK DesiredAccess
,
139 OUT PLSA_DB_OBJECT
*DbObject
);
142 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
143 IN LPWSTR ContainerName
,
144 IN LPWSTR ObjectName
,
145 IN LSA_DB_OBJECT_TYPE ObjectType
,
146 IN ACCESS_MASK DesiredAccess
,
148 OUT PLSA_DB_OBJECT
*DbObject
);
151 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
152 IN LSA_DB_OBJECT_TYPE HandleType
,
153 IN ACCESS_MASK GrantedAccess
,
154 OUT PLSA_DB_OBJECT
*DbObject
);
157 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
160 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
163 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
164 LPWSTR AttributeName
,
165 LPVOID AttributeData
,
166 PULONG AttributeSize
);
169 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
170 LPWSTR AttributeName
,
171 LPVOID AttributeData
,
172 ULONG AttributeSize
);
175 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject
,
176 LPWSTR AttributeName
);
187 LsapGetRelativeIdFromSid(PSID Sid
);
190 LsapLookupNames(DWORD Count
,
191 PRPC_UNICODE_STRING Names
,
192 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
193 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
194 LSAP_LOOKUP_LEVEL LookupLevel
,
197 DWORD ClientRevision
);
200 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
201 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
202 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
203 LSAP_LOOKUP_LEVEL LookupLevel
,
206 DWORD ClientRevision
);
210 LsarStartRpcServer(VOID
);
214 LsapInitNotificationList(VOID
);
217 LsapRegisterNotification(
218 PLSA_API_MSG RequestMsg
);
221 LsapNotifyPolicyChange(
222 POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass
);
226 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
227 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
230 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
231 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
234 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
235 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
238 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
239 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
242 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
243 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
246 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
247 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
250 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
251 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
254 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
255 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
258 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
259 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
262 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
263 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
266 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
267 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
270 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
271 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
274 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
275 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
278 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
279 PPOLICY_AUDIT_LOG_INFO Info
);
282 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
283 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
286 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
287 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
290 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
291 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
294 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
295 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
298 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
299 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
302 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
303 PPOLICY_DEFAULT_QUOTA_INFO Info
);
306 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
307 PPOLICY_MODIFICATION_INFO Info
);
310 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
311 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
314 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
315 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
318 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
319 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
322 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
323 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
327 LsarpLookupPrivilegeName(PLUID Value
,
328 PRPC_UNICODE_STRING
*Name
);
331 LsarpLookupPrivilegeDisplayName(PRPC_UNICODE_STRING Name
,
332 USHORT ClientLanguage
,
333 USHORT ClientSystemDefaultLanguage
,
334 PRPC_UNICODE_STRING
*DisplayName
,
335 USHORT
*LanguageReturned
);
338 LsarpLookupPrivilegeValue(
339 IN PRPC_UNICODE_STRING Name
);
342 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
343 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
344 DWORD PreferedMaximumLength
);
347 LsapLookupAccountRightName(ULONG RightValue
,
348 PRPC_UNICODE_STRING
*Name
);
351 LsapLookupAccountRightValue(
352 IN PRPC_UNICODE_STRING Name
);
356 LsapRegCloseKey(IN HANDLE KeyHandle
);
359 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
361 IN ACCESS_MASK DesiredAccess
,
362 OUT HANDLE KeyHandle
);
365 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
369 LsapRegDeleteKey(IN HANDLE KeyHandle
);
372 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
378 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
380 IN ACCESS_MASK DesiredAccess
,
381 OUT HANDLE KeyHandle
);
384 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
385 OUT PULONG SubKeyCount
,
386 OUT PULONG MaxSubKeyNameLength
,
387 OUT PULONG ValueCount
);
390 LsapRegDeleteValue(IN HANDLE KeyHandle
,
391 IN LPWSTR ValueName
);
394 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
397 IN OUT PULONG NameLength
,
398 OUT PULONG Type OPTIONAL
,
399 OUT PVOID Data OPTIONAL
,
400 IN OUT PULONG DataLength OPTIONAL
);
403 LsapRegQueryValue(IN HANDLE KeyHandle
,
405 OUT PULONG Type OPTIONAL
,
406 OUT LPVOID Data OPTIONAL
,
407 IN OUT PULONG DataLength OPTIONAL
);
410 LsapRegSetValue(IN HANDLE KeyHandle
,
414 IN ULONG DataLength
);
418 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
419 PULONG PolicySdSize
);
422 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
423 PULONG AccountSdSize
);
426 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
427 PULONG SecretSdSize
);
431 LsapInitLogonSessions(VOID
);
435 LsapCreateLogonSession(IN PLUID LogonId
);
439 LsapDeleteLogonSession(IN PLUID LogonId
);
445 _In_ ULONG AuthenticationPackage
,
446 _In_ PLSA_STRING PrimaryKeyValue
,
447 _In_ PLSA_STRING Credential
);
453 _In_ ULONG AuthenticationPackage
,
454 _Inout_ PULONG QueryContext
,
455 _In_ BOOLEAN RetrieveAllCredentials
,
456 _Inout_ PLSA_STRING PrimaryKeyValue
,
457 _Out_ PULONG PrimaryKeyLength
,
458 _Out_ PLSA_STRING Credentials
);
462 LsapDeleteCredential(
464 _In_ ULONG AuthenticationPackage
,
465 _In_ PLSA_STRING PrimaryKeyValue
);
468 LsapSetLogonSessionData(
470 _In_ ULONG LogonType
,
471 _In_ PUNICODE_STRING UserName
,
472 _In_ PUNICODE_STRING LogonDomain
,
476 LsapEnumLogonSessions(IN OUT PLSA_API_MSG RequestMsg
);
479 LsapGetLogonSessionData(IN OUT PLSA_API_MSG RequestMsg
);
483 LsapRmInitializeServer(VOID
);
486 LsapRmCreateLogonSession(
490 LsapRmDeleteLogonSession(
495 LsapLoadString(HINSTANCE hInstance
,
501 LsapGetResourceStringLengthEx(
502 _In_ HINSTANCE hInstance
,
504 _In_ USHORT usLanguage
);
508 _In_ HINSTANCE hInstance
,
510 _In_ USHORT usLanguage
,
511 _Out_ LPWSTR lpBuffer
,
512 _Out_ INT nBufferMax
);
519 #endif /* _LSASRV_H */