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/kefuncs.h>
26 #include <ndk/mmfuncs.h>
27 #include <ndk/obfuncs.h>
28 #include <ndk/psfuncs.h>
29 #include <ndk/rtlfuncs.h>
30 #include <ndk/setypes.h>
41 #include <wine/debug.h>
42 WINE_DEFAULT_DEBUG_CHANNEL(lsasrv
);
44 typedef enum _LSA_DB_OBJECT_TYPE
51 } LSA_DB_OBJECT_TYPE
, *PLSA_DB_OBJECT_TYPE
;
53 typedef struct _LSA_DB_OBJECT
56 LSA_DB_OBJECT_TYPE ObjectType
;
61 struct _LSA_DB_OBJECT
*ParentObject
;
62 } LSA_DB_OBJECT
, *PLSA_DB_OBJECT
;
64 #define LSAP_DB_SIGNATURE 0x12345678
66 #define POLICY_AUDIT_EVENT_TYPE_COUNT (AuditCategoryAccountLogon - AuditCategorySystem + 1)
67 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
70 DWORD AuditEvents
[POLICY_AUDIT_EVENT_TYPE_COUNT
];
71 DWORD MaximumAuditEventCount
;
72 } LSAP_POLICY_AUDIT_EVENTS_DATA
, *PLSAP_POLICY_AUDIT_EVENTS_DATA
;
74 typedef struct _LSAP_LOGON_CONTEXT
77 HANDLE ClientProcessHandle
;
78 HANDLE ConnectionHandle
;
79 } LSAP_LOGON_CONTEXT
, *PLSAP_LOGON_CONTEXT
;
81 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority
;
82 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority
;
83 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority
;
84 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority
;
85 extern SID_IDENTIFIER_AUTHORITY NtAuthority
;
87 extern PSID BuiltinDomainSid
;
88 extern UNICODE_STRING BuiltinDomainName
;
89 extern PSID AccountDomainSid
;
90 extern UNICODE_STRING AccountDomainName
;
92 extern PSID LsapWorldSid
;
93 extern PSID LsapNetworkSid
;
94 extern PSID LsapBatchSid
;
95 extern PSID LsapInteractiveSid
;
96 extern PSID LsapServiceSid
;
97 extern PSID LsapLocalSystemSid
;
98 extern PSID LsapAdministratorsSid
;
103 LsapInitAuthPackages(VOID
);
106 LsapLookupAuthenticationPackage(PLSA_API_MSG RequestMsg
,
107 PLSAP_LOGON_CONTEXT LogonContext
);
110 LsapCallAuthenticationPackage(PLSA_API_MSG RequestMsg
,
111 PLSAP_LOGON_CONTEXT LogonContext
);
114 LsapLogonUser(PLSA_API_MSG RequestMsg
,
115 PLSAP_LOGON_CONTEXT LogonContext
);
119 StartAuthenticationPort(VOID
);
123 LsapInitDatabase(VOID
);
126 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
127 IN LPWSTR ContainerName
,
128 IN LPWSTR ObjectName
,
129 IN LSA_DB_OBJECT_TYPE HandleType
,
130 IN ACCESS_MASK DesiredAccess
,
132 OUT PLSA_DB_OBJECT
*DbObject
);
135 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
136 IN LPWSTR ContainerName
,
137 IN LPWSTR ObjectName
,
138 IN LSA_DB_OBJECT_TYPE ObjectType
,
139 IN ACCESS_MASK DesiredAccess
,
141 OUT PLSA_DB_OBJECT
*DbObject
);
144 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
145 IN LSA_DB_OBJECT_TYPE HandleType
,
146 IN ACCESS_MASK GrantedAccess
,
147 OUT PLSA_DB_OBJECT
*DbObject
);
150 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
153 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
156 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
157 LPWSTR AttributeName
,
158 LPVOID AttributeData
,
159 PULONG AttributeSize
);
162 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
163 LPWSTR AttributeName
,
164 LPVOID AttributeData
,
165 ULONG AttributeSize
);
168 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject
,
169 LPWSTR AttributeName
);
180 LsapGetRelativeIdFromSid(PSID Sid
);
183 LsapLookupNames(DWORD Count
,
184 PRPC_UNICODE_STRING Names
,
185 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
186 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
187 LSAP_LOOKUP_LEVEL LookupLevel
,
190 DWORD ClientRevision
);
193 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
194 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
195 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
196 LSAP_LOOKUP_LEVEL LookupLevel
,
199 DWORD ClientRevision
);
203 LsarStartRpcServer(VOID
);
207 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
208 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
211 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
212 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
215 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
216 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
219 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
220 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
223 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
224 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
227 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
228 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
231 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
232 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
235 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
236 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
239 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
240 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
243 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
244 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
247 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
248 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
251 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
252 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
255 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
256 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
259 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
260 PPOLICY_AUDIT_LOG_INFO Info
);
263 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
264 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
267 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
268 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
271 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
272 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
275 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
276 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
279 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
280 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
283 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
284 PPOLICY_DEFAULT_QUOTA_INFO Info
);
287 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
288 PPOLICY_MODIFICATION_INFO Info
);
291 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
292 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
295 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
296 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
299 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
300 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
303 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
304 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
308 LsarpLookupPrivilegeName(PLUID Value
,
309 PRPC_UNICODE_STRING
*Name
);
312 LsarpLookupPrivilegeDisplayName(PRPC_UNICODE_STRING Name
,
313 USHORT ClientLanguage
,
314 USHORT ClientSystemDefaultLanguage
,
315 PRPC_UNICODE_STRING
*DisplayName
,
316 USHORT
*LanguageReturned
);
319 LsarpLookupPrivilegeValue(
320 IN PRPC_UNICODE_STRING Name
);
323 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
324 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
325 DWORD PreferedMaximumLength
);
328 LsapLookupAccountRightName(ULONG RightValue
,
329 PRPC_UNICODE_STRING
*Name
);
332 LsapLookupAccountRightValue(
333 IN PRPC_UNICODE_STRING Name
);
337 LsapRegCloseKey(IN HANDLE KeyHandle
);
340 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
342 IN ACCESS_MASK DesiredAccess
,
343 OUT HANDLE KeyHandle
);
346 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
350 LsapRegDeleteKey(IN HANDLE KeyHandle
);
353 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
359 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
361 IN ACCESS_MASK DesiredAccess
,
362 OUT HANDLE KeyHandle
);
365 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
366 OUT PULONG SubKeyCount
,
367 OUT PULONG MaxSubKeyNameLength
,
368 OUT PULONG ValueCount
);
371 LsapRegDeleteValue(IN HANDLE KeyHandle
,
372 IN LPWSTR ValueName
);
375 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
378 IN OUT PULONG NameLength
,
379 OUT PULONG Type OPTIONAL
,
380 OUT PVOID Data OPTIONAL
,
381 IN OUT PULONG DataLength OPTIONAL
);
384 LsapRegQueryValue(IN HANDLE KeyHandle
,
386 OUT PULONG Type OPTIONAL
,
387 OUT LPVOID Data OPTIONAL
,
388 IN OUT PULONG DataLength OPTIONAL
);
391 LsapRegSetValue(IN HANDLE KeyHandle
,
395 IN ULONG DataLength
);
399 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
400 PULONG PolicySdSize
);
403 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
404 PULONG AccountSdSize
);
407 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
408 PULONG SecretSdSize
);
412 LsapInitLogonSessions(VOID
);
416 LsapCreateLogonSession(IN PLUID LogonId
);
420 LsapDeleteLogonSession(IN PLUID LogonId
);
426 _In_ ULONG AuthenticationPackage
,
427 _In_ PLSA_STRING PrimaryKeyValue
,
428 _In_ PLSA_STRING Credential
);
434 _In_ ULONG AuthenticationPackage
,
435 _Inout_ PULONG QueryContext
,
436 _In_ BOOLEAN RetrieveAllCredentials
,
437 _Inout_ PLSA_STRING PrimaryKeyValue
,
438 _Out_ PULONG PrimaryKeyLength
,
439 _Out_ PLSA_STRING Credentials
);
443 LsapDeleteCredential(
445 _In_ ULONG AuthenticationPackage
,
446 _In_ PLSA_STRING PrimaryKeyValue
);
449 LsapSetLogonSessionData(IN PLUID LogonId
);
452 LsapEnumLogonSessions(IN OUT PLSA_API_MSG RequestMsg
);
455 LsapGetLogonSessionData(IN OUT PLSA_API_MSG RequestMsg
);
459 LsapRmInitializeServer(VOID
);
462 LsapRmCreateLogonSession(
466 LsapRmDeleteLogonSession(
471 LsapLoadString(HINSTANCE hInstance
,
481 #endif /* _LSASRV_H */