[WINLOGON]

- Read notification DLL parameters.
- Use the Enabled value.

svn path=/trunk/; revision=68862
This commit is contained in:
Eric Kohl 2015-08-29 15:50:02 +00:00
parent a7236633f6
commit 1e34580fd6

View file

@ -37,6 +37,12 @@ typedef struct _NOTIFICATION_ITEM
LIST_ENTRY ListEntry; LIST_ENTRY ListEntry;
HINSTANCE hInstance; HINSTANCE hInstance;
BOOL bEnabled;
BOOL bAsynchronous;
BOOL bSafe;
BOOL bImpersonate;
BOOL bSmartCardLogon;
DWORD dwMaxWait;
PWLX_NOTIFY_HANDLER Handler[LastHandler]; PWLX_NOTIFY_HANDLER Handler[LastHandler];
} NOTIFICATION_ITEM, *PNOTIFICATION_ITEM; } NOTIFICATION_ITEM, *PNOTIFICATION_ITEM;
@ -117,8 +123,58 @@ LoadNotificationDll(
if (NotificationDll == NULL) if (NotificationDll == NULL)
return; return;
NotificationDll->bEnabled = TRUE;
NotificationDll->dwMaxWait = 30; /* FIXME: ??? */
NotificationDll->hInstance = hInstance; 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++) for (i = LogonHandler; i < LastHandler; i++)
{ {
NotificationDll->Handler[i] = GetNotificationHandler(hDllKey, hInstance, FuncNames[i]); NotificationDll->Handler[i] = GetNotificationHandler(hDllKey, hInstance, FuncNames[i]);
@ -243,7 +299,7 @@ TRACE("ListEntry %p\n", ListEntry);
NOTIFICATION_ITEM, NOTIFICATION_ITEM,
ListEntry); ListEntry);
TRACE("NotificationDll: %p\n", NotificationDll); TRACE("NotificationDll: %p\n", NotificationDll);
if (NotificationDll != NULL) if (NotificationDll != NULL && NotificationDll->bEnabled)
{ {
TRACE("NotificationDll->Handler: %p\n", NotificationDll->Handler[Type]); TRACE("NotificationDll->Handler: %p\n", NotificationDll->Handler[Type]);
if (NotificationDll->Handler[Type] != NULL) if (NotificationDll->Handler[Type] != NULL)