#include <windows.h>
#define NTOS_MODE_USER
#include <ndk/cmfuncs.h>
+#include <ndk/kefuncs.h>
#include <ndk/lpctypes.h>
#include <ndk/lpcfuncs.h>
#include <ndk/obfuncs.h>
#include <ndk/rtlfuncs.h>
#include <ndk/setypes.h>
-
+#include <ntlsa.h>
#include <ntsecapi.h>
+#include <sddl.h>
#include <string.h>
#define LSAP_DB_SIGNATURE 0x12345678
+typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
+{
+ BOOLEAN AuditingMode;
+ DWORD MaximumAuditEventCount;
+ DWORD AuditEvents[0];
+} LSAP_POLICY_AUDIT_EVENTS_DATA, *PLSAP_POLICY_AUDIT_EVENTS_DATA;
+
+
/* authport.c */
NTSTATUS
StartAuthenticationPort(VOID);
NTSTATUS
LsapInitDatabase(VOID);
-LSAPR_HANDLE
-LsapCreateDbObject(LSAPR_HANDLE ParentHandle,
- LPWSTR ObjectName,
- BOOLEAN Open,
- LSA_DB_OBJECT_TYPE HandleType,
- ACCESS_MASK DesiredAccess);
+NTSTATUS
+LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject,
+ IN LPWSTR ObjectName,
+ IN LSA_DB_OBJECT_TYPE HandleType,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PLSA_DB_OBJECT *DbObject);
NTSTATUS
-LsapValidateDbObject(LSAPR_HANDLE Handle,
- LSA_DB_OBJECT_TYPE HandleType,
- ACCESS_MASK GrantedAccess);
+LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject,
+ IN LPWSTR ObjectName,
+ IN LSA_DB_OBJECT_TYPE ObjectType,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PLSA_DB_OBJECT *DbObject);
NTSTATUS
-LsapCloseDbObject(LSAPR_HANDLE Handle);
+LsapValidateDbObject(IN LSAPR_HANDLE Handle,
+ IN LSA_DB_OBJECT_TYPE HandleType,
+ IN ACCESS_MASK GrantedAccess,
+ OUT PLSA_DB_OBJECT *DbObject);
+
+NTSTATUS
+LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject);
NTSTATUS
LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject,
/* policy.c */
NTSTATUS
-LsarSetPrimaryDomain(LSAPR_HANDLE PolicyObject,
+LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarQueryModification(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject,
+ PLSAPR_POLICY_INFORMATION *PolicyInformation);
+
+NTSTATUS
+LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject,
PLSAPR_POLICY_PRIMARY_DOM_INFO Info);
NTSTATUS
-LsarSetAccountDomain(LSAPR_HANDLE PolicyObject,
+LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject,
PLSAPR_POLICY_ACCOUNT_DOM_INFO Info);
NTSTATUS
-LsarSetDnsDomain(LSAPR_HANDLE PolicyObject,
+LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject,
PLSAPR_POLICY_DNS_DOMAIN_INFO Info);
/* privileges.c */
LsarpLookupPrivilegeValue(PUNICODE_STRING Name,
PLUID Value);
+NTSTATUS
+LsarpEnumeratePrivileges(DWORD *EnumerationContext,
+ PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer,
+ DWORD PreferedMaximumLength);
+
/* sids.h */
NTSTATUS
LsapInitSids(VOID);