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/obfuncs.h>
27 #include <ndk/rtlfuncs.h>
28 #include <ndk/setypes.h>
37 #include <wine/debug.h>
38 WINE_DEFAULT_DEBUG_CHANNEL(lsasrv
);
40 typedef enum _LSA_DB_OBJECT_TYPE
47 } LSA_DB_OBJECT_TYPE
, *PLSA_DB_OBJECT_TYPE
;
49 typedef struct _LSA_DB_OBJECT
52 LSA_DB_OBJECT_TYPE ObjectType
;
57 struct _LSA_DB_OBJECT
*ParentObject
;
58 } LSA_DB_OBJECT
, *PLSA_DB_OBJECT
;
60 #define LSAP_DB_SIGNATURE 0x12345678
62 #define POLICY_AUDIT_EVENT_TYPE_COUNT (AuditCategoryAccountLogon - AuditCategorySystem + 1)
63 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
66 DWORD AuditEvents
[POLICY_AUDIT_EVENT_TYPE_COUNT
];
67 DWORD MaximumAuditEventCount
;
68 } LSAP_POLICY_AUDIT_EVENTS_DATA
, *PLSAP_POLICY_AUDIT_EVENTS_DATA
;
70 typedef struct _LSAP_LOGON_CONTEXT
73 HANDLE ClientProcessHandle
;
74 HANDLE ConnectionHandle
;
75 } LSAP_LOGON_CONTEXT
, *PLSAP_LOGON_CONTEXT
;
77 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority
;
78 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority
;
79 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority
;
80 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority
;
81 extern SID_IDENTIFIER_AUTHORITY NtAuthority
;
83 extern PSID BuiltinDomainSid
;
84 extern UNICODE_STRING BuiltinDomainName
;
85 extern PSID AccountDomainSid
;
86 extern UNICODE_STRING AccountDomainName
;
88 extern PSID LsapWorldSid
;
89 extern PSID LsapNetworkSid
;
90 extern PSID LsapBatchSid
;
91 extern PSID LsapInteractiveSid
;
92 extern PSID LsapServiceSid
;
93 extern PSID LsapLocalSystemSid
;
94 extern PSID LsapAdministratorsSid
;
99 LsapInitAuthPackages(VOID
);
102 LsapLookupAuthenticationPackage(PLSA_API_MSG RequestMsg
,
103 PLSAP_LOGON_CONTEXT LogonContext
);
106 LsapCallAuthenticationPackage(PLSA_API_MSG RequestMsg
,
107 PLSAP_LOGON_CONTEXT LogonContext
);
110 LsapLogonUser(PLSA_API_MSG RequestMsg
,
111 PLSAP_LOGON_CONTEXT LogonContext
);
115 StartAuthenticationPort(VOID
);
119 LsapInitDatabase(VOID
);
122 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject
,
123 IN LPWSTR ContainerName
,
124 IN LPWSTR ObjectName
,
125 IN LSA_DB_OBJECT_TYPE HandleType
,
126 IN ACCESS_MASK DesiredAccess
,
128 OUT PLSA_DB_OBJECT
*DbObject
);
131 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject
,
132 IN LPWSTR ContainerName
,
133 IN LPWSTR ObjectName
,
134 IN LSA_DB_OBJECT_TYPE ObjectType
,
135 IN ACCESS_MASK DesiredAccess
,
137 OUT PLSA_DB_OBJECT
*DbObject
);
140 LsapValidateDbObject(IN LSAPR_HANDLE Handle
,
141 IN LSA_DB_OBJECT_TYPE HandleType
,
142 IN ACCESS_MASK GrantedAccess
,
143 OUT PLSA_DB_OBJECT
*DbObject
);
146 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject
);
149 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject
);
152 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject
,
153 LPWSTR AttributeName
,
154 LPVOID AttributeData
,
155 PULONG AttributeSize
);
158 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject
,
159 LPWSTR AttributeName
,
160 LPVOID AttributeData
,
161 ULONG AttributeSize
);
164 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject
,
165 LPWSTR AttributeName
);
172 LsapGetRelativeIdFromSid(PSID Sid
);
175 LsapLookupNames(DWORD Count
,
176 PRPC_UNICODE_STRING Names
,
177 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
178 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
179 LSAP_LOOKUP_LEVEL LookupLevel
,
182 DWORD ClientRevision
);
185 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
186 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
187 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
188 LSAP_LOOKUP_LEVEL LookupLevel
,
191 DWORD ClientRevision
);
195 LsarStartRpcServer(VOID
);
199 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject
,
200 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
203 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject
,
204 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
207 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
208 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
211 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject
,
212 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
215 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject
,
216 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
219 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject
,
220 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
223 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject
,
224 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
227 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
228 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
231 LsarQueryModification(PLSA_DB_OBJECT PolicyObject
,
232 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
235 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject
,
236 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
239 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject
,
240 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
243 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
244 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
247 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
248 PLSAPR_POLICY_INFORMATION
*PolicyInformation
);
251 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject
,
252 PPOLICY_AUDIT_LOG_INFO Info
);
255 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject
,
256 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info
);
259 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject
,
260 PLSAPR_POLICY_PRIMARY_DOM_INFO Info
);
263 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject
,
264 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
267 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject
,
268 PPOLICY_LSA_SERVER_ROLE_INFO Info
);
271 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject
,
272 PPOLICY_LSA_REPLICA_SRCE_INFO Info
);
275 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject
,
276 PPOLICY_DEFAULT_QUOTA_INFO Info
);
279 LsarSetModification(PLSA_DB_OBJECT PolicyObject
,
280 PPOLICY_MODIFICATION_INFO Info
);
283 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject
,
284 PPOLICY_AUDIT_FULL_QUERY_INFO Info
);
287 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject
,
288 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
291 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject
,
292 PLSAPR_POLICY_DNS_DOMAIN_INFO Info
);
295 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject
,
296 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info
);
300 LsarpLookupPrivilegeName(PLUID Value
,
301 PRPC_UNICODE_STRING
*Name
);
304 LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name
,
308 LsarpEnumeratePrivileges(DWORD
*EnumerationContext
,
309 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
310 DWORD PreferedMaximumLength
);
313 LsapLookupAccountRightName(ULONG RightValue
,
314 PRPC_UNICODE_STRING
*Name
);
318 LsapRegCloseKey(IN HANDLE KeyHandle
);
321 LsapRegCreateKey(IN HANDLE ParentKeyHandle
,
323 IN ACCESS_MASK DesiredAccess
,
324 OUT HANDLE KeyHandle
);
327 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle
,
331 LsapRegDeleteKey(IN HANDLE KeyHandle
);
334 LsapRegEnumerateSubKey(IN HANDLE KeyHandle
,
340 LsapRegOpenKey(IN HANDLE ParentKeyHandle
,
342 IN ACCESS_MASK DesiredAccess
,
343 OUT HANDLE KeyHandle
);
346 LsapRegQueryKeyInfo(IN HANDLE KeyHandle
,
347 OUT PULONG SubKeyCount
,
348 OUT PULONG ValueCount
);
351 LsapRegDeleteValue(IN HANDLE KeyHandle
,
352 IN LPWSTR ValueName
);
355 LsapRegEnumerateValue(IN HANDLE KeyHandle
,
358 IN OUT PULONG NameLength
,
359 OUT PULONG Type OPTIONAL
,
360 OUT PVOID Data OPTIONAL
,
361 IN OUT PULONG DataLength OPTIONAL
);
364 LsapRegQueryValue(IN HANDLE KeyHandle
,
366 OUT PULONG Type OPTIONAL
,
367 OUT LPVOID Data OPTIONAL
,
368 IN OUT PULONG DataLength OPTIONAL
);
371 LsapRegSetValue(IN HANDLE KeyHandle
,
375 IN ULONG DataLength
);
379 LsapCreatePolicySd(PSECURITY_DESCRIPTOR
*PolicySd
,
380 PULONG PolicySdSize
);
383 LsapCreateAccountSd(PSECURITY_DESCRIPTOR
*AccountSd
,
384 PULONG AccountSdSize
);
387 LsapCreateSecretSd(PSECURITY_DESCRIPTOR
*SecretSd
,
388 PULONG SecretSdSize
);
392 LsapInitLogonSessions(VOID
);
396 LsapCreateLogonSession(IN PLUID LogonId
);
400 LsapDeleteLogonSession(IN PLUID LogonId
);
403 LsapSetLogonSessionData(IN PLUID LogonId
);
407 LsapLoadString(HINSTANCE hInstance
,
417 #endif /* _LSASRV_H */