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>
39 #include <wine/debug.h>
40 WINE_DEFAULT_DEBUG_CHANNEL(lsasrv
);
42 typedef enum _LSA_DB_OBJECT_TYPE
49 } LSA_DB_OBJECT_TYPE
, *PLSA_DB_OBJECT_TYPE
;
51 typedef struct _LSA_DB_OBJECT
54 LSA_DB_OBJECT_TYPE ObjectType
;
59 struct _LSA_DB_OBJECT
*ParentObject
;
60 } LSA_DB_OBJECT
, *PLSA_DB_OBJECT
;
62 #define LSAP_DB_SIGNATURE 0x12345678
64 #define POLICY_AUDIT_EVENT_TYPE_COUNT (AuditCategoryAccountLogon - AuditCategorySystem + 1)
65 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
68 DWORD AuditEvents
[POLICY_AUDIT_EVENT_TYPE_COUNT
];
69 DWORD MaximumAuditEventCount
;
70 } LSAP_POLICY_AUDIT_EVENTS_DATA
, *PLSAP_POLICY_AUDIT_EVENTS_DATA
;
72 typedef struct _LSAP_LOGON_CONTEXT
75 HANDLE ClientProcessHandle
;
76 HANDLE ConnectionHandle
;
77 } LSAP_LOGON_CONTEXT
, *PLSAP_LOGON_CONTEXT
;
79 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority
;
80 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority
;
81 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority
;
82 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority
;
83 extern SID_IDENTIFIER_AUTHORITY NtAuthority
;
85 extern PSID BuiltinDomainSid
;
86 extern UNICODE_STRING BuiltinDomainName
;
87 extern PSID AccountDomainSid
;
88 extern UNICODE_STRING AccountDomainName
;
90 extern PSID LsapWorldSid
;
91 extern PSID LsapNetworkSid
;
92 extern PSID LsapBatchSid
;
93 extern PSID LsapInteractiveSid
;
94 extern PSID LsapServiceSid
;
95 extern PSID LsapLocalSystemSid
;
96 extern PSID LsapAdministratorsSid
;
101 LsapInitAuthPackages(VOID
);
104 LsapLookupAuthenticationPackage(PLSA_API_MSG RequestMsg
,
105 PLSAP_LOGON_CONTEXT LogonContext
);
108 LsapCallAuthenticationPackage(PLSA_API_MSG RequestMsg
,
109 PLSAP_LOGON_CONTEXT LogonContext
);
112 LsapLogonUser(PLSA_API_MSG RequestMsg
,
113 PLSAP_LOGON_CONTEXT LogonContext
);
117 StartAuthenticationPort(VOID
);
121 LsapInitDatabase(VOID
);
124 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
125 IN LPWSTR ContainerName
,
126 IN LPWSTR ObjectName
,
127 IN LSA_DB_OBJECT_TYPE HandleType
,
128 IN ACCESS_MASK DesiredAccess
,
130 OUT PLSA_DB_OBJECT
*DbObject
);
133 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
134 IN LPWSTR ContainerName
,
135 IN LPWSTR ObjectName
,
136 IN LSA_DB_OBJECT_TYPE ObjectType
,
137 IN ACCESS_MASK DesiredAccess
,
139 OUT PLSA_DB_OBJECT
*DbObject
);
142 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
143 IN LSA_DB_OBJECT_TYPE HandleType
,
144 IN ACCESS_MASK GrantedAccess
,
145 OUT PLSA_DB_OBJECT
*DbObject
);
148 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
151 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
154 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
155 LPWSTR AttributeName
,
156 LPVOID AttributeData
,
157 PULONG AttributeSize
);
160 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
161 LPWSTR AttributeName
,
162 LPVOID AttributeData
,
163 ULONG AttributeSize
);
166 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject
,
167 LPWSTR AttributeName
);
178 LsapGetRelativeIdFromSid(PSID Sid
);
181 LsapLookupNames(DWORD Count
,
182 PRPC_UNICODE_STRING Names
,
183 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
184 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
185 LSAP_LOOKUP_LEVEL LookupLevel
,
188 DWORD ClientRevision
);
191 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
192 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
193 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
194 LSAP_LOOKUP_LEVEL LookupLevel
,
197 DWORD ClientRevision
);
201 LsarStartRpcServer(VOID
);
205 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
206 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
209 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
210 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
213 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
214 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
217 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
218 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
221 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
222 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
225 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
226 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
229 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
230 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
233 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
234 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
237 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
238 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
241 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
242 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
245 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
246 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
249 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
250 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
253 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
254 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
257 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
258 PPOLICY_AUDIT_LOG_INFO Info
);
261 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
262 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
265 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
266 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
269 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
270 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
273 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
274 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
277 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
278 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
281 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
282 PPOLICY_DEFAULT_QUOTA_INFO Info
);
285 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
286 PPOLICY_MODIFICATION_INFO Info
);
289 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
290 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
293 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
294 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
297 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
298 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
301 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
302 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
306 LsarpLookupPrivilegeName(PLUID Value
,
307 PRPC_UNICODE_STRING
*Name
);
310 LsarpLookupPrivilegeDisplayName(PRPC_UNICODE_STRING Name
,
311 USHORT ClientLanguage
,
312 USHORT ClientSystemDefaultLanguage
,
313 PRPC_UNICODE_STRING
*DisplayName
,
314 USHORT
*LanguageReturned
);
317 LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name
,
321 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
322 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
323 DWORD PreferedMaximumLength
);
326 LsapLookupAccountRightName(ULONG RightValue
,
327 PRPC_UNICODE_STRING
*Name
);
331 LsapRegCloseKey(IN HANDLE KeyHandle
);
334 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
336 IN ACCESS_MASK DesiredAccess
,
337 OUT HANDLE KeyHandle
);
340 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
344 LsapRegDeleteKey(IN HANDLE KeyHandle
);
347 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
353 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
355 IN ACCESS_MASK DesiredAccess
,
356 OUT HANDLE KeyHandle
);
359 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
360 OUT PULONG SubKeyCount
,
361 OUT PULONG ValueCount
);
364 LsapRegDeleteValue(IN HANDLE KeyHandle
,
365 IN LPWSTR ValueName
);
368 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
371 IN OUT PULONG NameLength
,
372 OUT PULONG Type OPTIONAL
,
373 OUT PVOID Data OPTIONAL
,
374 IN OUT PULONG DataLength OPTIONAL
);
377 LsapRegQueryValue(IN HANDLE KeyHandle
,
379 OUT PULONG Type OPTIONAL
,
380 OUT LPVOID Data OPTIONAL
,
381 IN OUT PULONG DataLength OPTIONAL
);
384 LsapRegSetValue(IN HANDLE KeyHandle
,
388 IN ULONG DataLength
);
392 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
393 PULONG PolicySdSize
);
396 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
397 PULONG AccountSdSize
);
400 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
401 PULONG SecretSdSize
);
405 LsapInitLogonSessions(VOID
);
409 LsapCreateLogonSession(IN PLUID LogonId
);
413 LsapDeleteLogonSession(IN PLUID LogonId
);
416 LsapSetLogonSessionData(IN PLUID LogonId
);
419 LsapEnumLogonSessions(IN OUT PLSA_API_MSG RequestMsg
);
422 LsapGetLogonSessionData(IN OUT PLSA_API_MSG RequestMsg
);
426 LsapLoadString(HINSTANCE hInstance
,
436 #endif /* _LSASRV_H */