70 if (NotificationDll ==
NULL)
97 if (NotificationDll !=
NULL)
102 RtlFreeHeap(RtlGetProcessHeap(), 0, NotificationDll);
118 TRACE(
"AddNotificationDll(%p %S)\n", hNotifyKey, pszKeyName);
131 if (NotificationDll ==
NULL)
216 L"SmartCardLogonNotify",
236 if (NotificationDll !=
NULL)
244 RtlFreeHeap(RtlGetProcessHeap(), 0, NotificationDll);
261 TRACE(
"InitNotifications()\n");
268 L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\Notify",
274 TRACE(
"RegOpenKeyExW()\n");
293 TRACE(
"Notification DLL: %S\n", szKeyName);
301 TRACE(
"InitNotifications() done\n");
316 CHAR szFuncBuffer[128];
325 strcpy(szFuncBuffer,
"SfcWLEventLogon");
329 strcpy(szFuncBuffer,
"SfcWLEventLogoff");
349 TRACE(
"RegOpenKeyExW()\n");
353 dwSize =
sizeof(szFuncBuffer);
376 pNotifyHandler(pInfo);
380 ERR(
"WL: Exception while running notification %S!%s, Status 0x%08lx\n",
400 TRACE(
"CallNotificationDlls()\n");
403 L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\Notify",
409 TRACE(
"RegOpenKeyExW()\n");
453TRACE(
"ListEntry %p\n", ListEntry);
458TRACE(
"NotificationDll: %p\n", NotificationDll);
459 if (NotificationDll !=
NULL && NotificationDll->
bEnabled)
462 ListEntry = ListEntry->
Flink;
481 if (NotificationDll !=
NULL)
490 ListEntry = ListEntry->
Flink;
494 RtlFreeHeap(RtlGetProcessHeap(), 0, NotificationDll);
char * strcpy(char *DstString, const char *SrcString)
static LIST_ENTRY NotificationDllListHead
static PSTR FuncNames[LastHandler]
static VOID AddNotificationDll(HKEY hNotifyKey, PWSTR pszKeyName)
struct _NOTIFICATION_ITEM NOTIFICATION_ITEM
VOID(WINAPI * PWLX_NOTIFY_HANDLER)(PWLX_NOTIFICATION_INFO pInfo)
BOOL InitNotifications(VOID)
VOID CallNotificationDlls(PWLSESSION pSession, NOTIFICATION_TYPE Type)
struct _NOTIFICATION_ITEM * PNOTIFICATION_ITEM
VOID CleanupNotifications(VOID)
static VOID AddSfcNotification(VOID)
static VOID CallNotificationDll(HKEY hNotifyKey, PNOTIFICATION_ITEM NotificationDll, NOTIFICATION_TYPE Type, PWLX_NOTIFICATION_INFO pInfo)
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
#define RegCloseKey(hKey)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
#define GetProcAddress(x, y)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
#define RemoveEntryList(Entry)
#define InsertHeadList(ListHead, Entry)
#define InitializeListHead(ListHead)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define EXCEPTION_EXECUTE_HANDLER
#define ERROR_FILE_NOT_FOUND
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
#define KEY_ENUMERATE_SUB_KEYS
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
struct _LIST_ENTRY * Flink
LPWSTR InteractiveWindowStationName
#define CONTAINING_RECORD(address, type, field)
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
enum _NOTIFICATION_TYPE NOTIFICATION_TYPE
@ StartScreenSaverHandler
#define HKEY_LOCAL_MACHINE
struct _WLX_NOTIFICATION_INFO WLX_NOTIFICATION_INFO