[LSASRV] Implement and call the policy change notification routine
[reactos.git] / dll / win32 / lsasrv / lsasrv.h
index 46d7ab1..174a8fb 100644 (file)
 
 #define NTOS_MODE_USER
 #include <ndk/cmfuncs.h>
+#include <ndk/exfuncs.h>
 #include <ndk/kefuncs.h>
+#include <ndk/mmfuncs.h>
 #include <ndk/obfuncs.h>
+#include <ndk/psfuncs.h>
 #include <ndk/rtlfuncs.h>
 #include <ndk/setypes.h>
 
@@ -31,6 +34,8 @@
 #include <ntlsa.h>
 #include <sddl.h>
 
+#include <srmp.h>
+
 #include <lsass.h>
 #include <lsa_s.h>
 
@@ -74,6 +79,12 @@ typedef struct _LSAP_LOGON_CONTEXT
     HANDLE ConnectionHandle;
 } LSAP_LOGON_CONTEXT, *PLSAP_LOGON_CONTEXT;
 
+typedef struct _SAMPR_ULONG_ARRAY
+{
+    unsigned long Count;
+    unsigned long *Element;
+} SAMPR_ULONG_ARRAY, *PSAMPR_ULONG_ARRAY;
+
 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority;
 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority;
 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority;
@@ -164,6 +175,10 @@ NTSTATUS
 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject,
                           LPWSTR AttributeName);
 
+/* dssetup.c */
+VOID
+DsSetupInit(VOID);
+
 /* lookup.c */
 NTSTATUS
 LsapInitSids(VOID);
@@ -191,9 +206,21 @@ LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
                DWORD ClientRevision);
 
 /* lsarpc.c */
-VOID
+NTSTATUS
 LsarStartRpcServer(VOID);
 
+/* notify.c */
+VOID
+LsapInitNotificationList(VOID);
+
+NTSTATUS
+LsapRegisterNotification(
+    PLSA_API_MSG RequestMsg);
+
+VOID
+LsapNotifyPolicyChange(
+    POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass);
+
 /* policy.c */
 NTSTATUS
 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject,
@@ -301,8 +328,15 @@ LsarpLookupPrivilegeName(PLUID Value,
                          PRPC_UNICODE_STRING *Name);
 
 NTSTATUS
-LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name,
-                          PLUID Value);
+LsarpLookupPrivilegeDisplayName(PRPC_UNICODE_STRING Name,
+                                USHORT ClientLanguage,
+                                USHORT ClientSystemDefaultLanguage,
+                                PRPC_UNICODE_STRING *DisplayName,
+                                USHORT *LanguageReturned);
+
+PLUID
+LsarpLookupPrivilegeValue(
+    IN PRPC_UNICODE_STRING Name);
 
 NTSTATUS
 LsarpEnumeratePrivileges(DWORD *EnumerationContext,
@@ -313,6 +347,10 @@ NTSTATUS
 LsapLookupAccountRightName(ULONG RightValue,
                            PRPC_UNICODE_STRING *Name);
 
+ACCESS_MASK
+LsapLookupAccountRightValue(
+    IN PRPC_UNICODE_STRING Name);
+
 /* registry.h */
 NTSTATUS
 LsapRegCloseKey(IN HANDLE KeyHandle);
@@ -345,6 +383,7 @@ LsapRegOpenKey(IN HANDLE ParentKeyHandle,
 NTSTATUS
 LsapRegQueryKeyInfo(IN HANDLE KeyHandle,
                     OUT PULONG SubKeyCount,
+                    OUT PULONG MaxSubKeyNameLength,
                     OUT PULONG ValueCount);
 
 NTSTATUS
@@ -400,7 +439,56 @@ NTAPI
 LsapDeleteLogonSession(IN PLUID LogonId);
 
 NTSTATUS
-LsapSetLogonSessionData(IN PLUID LogonId);
+NTAPI
+LsapAddCredential(
+    _In_ PLUID LogonId,
+    _In_ ULONG AuthenticationPackage,
+    _In_ PLSA_STRING PrimaryKeyValue,
+    _In_ PLSA_STRING Credential);
+
+NTSTATUS
+NTAPI
+LsapGetCredentials(
+    _In_ PLUID LogonId,
+    _In_ ULONG AuthenticationPackage,
+    _Inout_ PULONG QueryContext,
+    _In_ BOOLEAN RetrieveAllCredentials,
+    _Inout_ PLSA_STRING PrimaryKeyValue,
+    _Out_ PULONG PrimaryKeyLength,
+    _Out_ PLSA_STRING Credentials);
+
+NTSTATUS
+NTAPI
+LsapDeleteCredential(
+    _In_ PLUID LogonId,
+    _In_ ULONG AuthenticationPackage,
+    _In_ PLSA_STRING PrimaryKeyValue);
+
+NTSTATUS
+LsapSetLogonSessionData(
+    _In_ PLUID LogonId,
+    _In_ ULONG LogonType,
+    _In_ PUNICODE_STRING UserName,
+    _In_ PUNICODE_STRING LogonDomain,
+    _In_ PSID Sid);
+
+NTSTATUS
+LsapEnumLogonSessions(IN OUT PLSA_API_MSG RequestMsg);
+
+NTSTATUS
+LsapGetLogonSessionData(IN OUT PLSA_API_MSG RequestMsg);
+
+/* srm.c */
+NTSTATUS
+LsapRmInitializeServer(VOID);
+
+NTSTATUS
+LsapRmCreateLogonSession(
+    PLUID LogonId);
+
+NTSTATUS
+LsapRmDeleteLogonSession(
+    PLUID LogonId);
 
 /* utils.c */
 INT
@@ -409,6 +497,20 @@ LsapLoadString(HINSTANCE hInstance,
                LPWSTR lpBuffer,
                INT nBufferMax);
 
+INT
+LsapGetResourceStringLengthEx(
+    _In_ HINSTANCE hInstance,
+    _In_ UINT uId,
+    _In_ USHORT usLanguage);
+
+INT
+LsapLoadStringEx(
+    _In_ HINSTANCE hInstance,
+    _In_ UINT uId,
+    _In_ USHORT usLanguage,
+    _Out_ LPWSTR lpBuffer,
+    _Out_ INT nBufferMax);
+
 PSID
 LsapAppendRidToSid(
     PSID SrcSid,