From 1e34580fd6c49493c9b14833e244be4952c6d6e1 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 29 Aug 2015 15:50:02 +0000 Subject: [PATCH] [WINLOGON] - Read notification DLL parameters. - Use the Enabled value. svn path=/trunk/; revision=68862 --- reactos/base/system/winlogon/notify.c | 58 ++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/reactos/base/system/winlogon/notify.c b/reactos/base/system/winlogon/notify.c index 460eea039dd..ecb98fd59a3 100644 --- a/reactos/base/system/winlogon/notify.c +++ b/reactos/base/system/winlogon/notify.c @@ -37,6 +37,12 @@ typedef struct _NOTIFICATION_ITEM LIST_ENTRY ListEntry; HINSTANCE hInstance; + BOOL bEnabled; + BOOL bAsynchronous; + BOOL bSafe; + BOOL bImpersonate; + BOOL bSmartCardLogon; + DWORD dwMaxWait; PWLX_NOTIFY_HANDLER Handler[LastHandler]; } NOTIFICATION_ITEM, *PNOTIFICATION_ITEM; @@ -117,8 +123,58 @@ LoadNotificationDll( if (NotificationDll == NULL) return; + NotificationDll->bEnabled = TRUE; + NotificationDll->dwMaxWait = 30; /* FIXME: ??? */ NotificationDll->hInstance = hInstance; + dwSize = sizeof(BOOL); + RegQueryValueExW(hDllKey, + L"Asynchronous", + NULL, + &dwType, + (PBYTE)&NotificationDll->bAsynchronous, + &dwSize); + + dwSize = sizeof(BOOL); + RegQueryValueExW(hDllKey, + L"Enabled", + NULL, + &dwType, + (PBYTE)&NotificationDll->bEnabled, + &dwSize); + + dwSize = sizeof(BOOL); + RegQueryValueExW(hDllKey, + L"Impersonate", + NULL, + &dwType, + (PBYTE)&NotificationDll->bImpersonate, + &dwSize); + + dwSize = sizeof(BOOL); + RegQueryValueExW(hDllKey, + L"Safe", + NULL, + &dwType, + (PBYTE)&NotificationDll->bSafe, + &dwSize); + + dwSize = sizeof(BOOL); + RegQueryValueExW(hDllKey, + L"SmartCardLogonNotify", + NULL, + &dwType, + (PBYTE)&NotificationDll->bSmartCardLogon, + &dwSize); + + dwSize = sizeof(DWORD); + RegQueryValueExW(hDllKey, + L"MaxWait", + NULL, + &dwType, + (PBYTE)&NotificationDll->dwMaxWait, + &dwSize); + for (i = LogonHandler; i < LastHandler; i++) { NotificationDll->Handler[i] = GetNotificationHandler(hDllKey, hInstance, FuncNames[i]); @@ -243,7 +299,7 @@ TRACE("ListEntry %p\n", ListEntry); NOTIFICATION_ITEM, ListEntry); TRACE("NotificationDll: %p\n", NotificationDll); - if (NotificationDll != NULL) + if (NotificationDll != NULL && NotificationDll->bEnabled) { TRACE("NotificationDll->Handler: %p\n", NotificationDll->Handler[Type]); if (NotificationDll->Handler[Type] != NULL)