21#define LVM_PROGRESS (WM_APP + 1)
36#define EVENT_MESSAGE_EVENTTEXT_BUFFER (1024*10)
37#define EVENT_MESSAGE_FILE_BUFFER (1024*10)
38#define EVENT_DLL_SEPARATOR L";"
39#define EVENT_CATEGORY_MESSAGE_FILE L"CategoryMessageFile"
40#define EVENT_MESSAGE_FILE L"EventMessageFile"
41#define EVENT_PARAMETER_MESSAGE_FILE L"ParameterMessageFile"
43#define MAX_LOADSTRING 255
198 if (!lpCmdLine || !*lpCmdLine)
235 if (cbFileName > 0 &&
lpFileName[cbFileName - 1] ==
L'\"')
302 while (*lpTemp ==
L'\\')
351 DWORD dwType, cbData;
365 Settings.wpPos.showCmd = nDefCmdShow;
481 &
Settings.wpPos.rcNormalPosition.left,
482 &
Settings.wpPos.rcNormalPosition.top,
483 &
Settings.wpPos.rcNormalPosition.right,
484 &
Settings.wpPos.rcNormalPosition.bottom,
490 Settings.wpPos.showCmd = nDefCmdShow;
544 Settings.wpPos.rcNormalPosition.left,
545 Settings.wpPos.rcNormalPosition.top,
546 Settings.wpPos.rcNormalPosition.right,
547 Settings.wpPos.rcNormalPosition.bottom,
576 iccx.
dwSize =
sizeof(iccx);
706 return (
int)
msg.wParam;
716 SYSTEMTIME st1970 = { 1970, 1, 0, 1, 0, 0, 0, 0 };
724 uUCT.ft.dwHighDateTime = 0;
725 uUCT.ft.dwLowDateTime = EventTime;
727 uUCT.ll = uUCT.ll * 10000000 + u1970.ll;
755 dwFlags &= ~FORMAT_MESSAGE_FROM_STRING;
795 dwFlags &= ~FORMAT_MESSAGE_ARGUMENT_ARRAY;
858 cbLength = (
wcslen(lpMessageDllList) + 1) *
sizeof(
WCHAR);
860 if (!szMessageDllList)
862 CopyMemory(szMessageDllList, lpMessageDllList, cbLength);
905 IN BOOL bMessagePreFormatted,
916 DWORD dwParamCount = 0;
918 size_t cchParams = 0;
925 *pFinalMessage =
NULL;
928 if (bMessagePreFormatted)
930 while ((pTempMessage =
wcschr(pTempMessage,
L'%')))
942 while ((pTempMessage =
wcsstr(pTempMessage,
L"%%")))
954 if (dwParamCount == 0)
972 pTempMessage = (
LPWSTR)pMessage;
973 if (bMessagePreFormatted)
975 while ((pTempMessage =
wcschr(pTempMessage,
L'%')) && (
i < dwParamCount))
992 while ((pTempMessage =
wcsstr(pTempMessage,
L"%%")) && (
i < dwParamCount))
1000 while (
iswdigit(*++pTempMessage)) ;
1009 for (
i = 0;
i < dwParamCount;
i++)
1016 pParamData[
i].pParameterID,
1018 if (!pParamData[
i].pParameter)
1024 cchParams +=
wcslen(pParamData[
i].pParameter);
1033 if (!*pFinalMessage)
1039 pTempFinalMessage = *pFinalMessage;
1042 pTempMessage = (
LPWSTR)pMessage;
1043 for (
i = 0;
i < dwParamCount;
i++)
1050 pTempFinalMessage +=
cch;
1053 if (pParamData[
i].pParameter)
1069 pTempFinalMessage +=
cch;
1082 for (
i = 0;
i < dwParamCount;
i++)
1084 if (pParamData[
i].pParameter)
1103 WCHAR wszNumber[24];
1104 WCHAR wszDecimalSep[8], wszThousandSep[8];
1106 WCHAR wszGrouping[12];
1130 for (
i = 0;
i < cchGrouping;
i++)
1132 WCHAR wch = wszGrouping[
i];
1134 if (wch >=
L'0' && wch <=
L'9')
1136 else if (wch !=
L';')
1157 return cchResult - 1;
1163 UINT cchWritten, cchRemaining;
1165 size_t cchStringRemaining;
1168 cchWritten =
FormatInteger(cbSize, pwszResult, cchResultMax);
1173 pwszEnd = pwszResult + cchWritten;
1174 cchRemaining = cchResultMax - cchWritten;
1175 StringCchCopyExW(pwszEnd, cchRemaining,
L" ", &pwszEnd, &cchStringRemaining, 0);
1176 cchRemaining = (
UINT)cchStringRemaining;
1178 cchRemaining -= cchWritten;
1180 return cchResultMax - cchRemaining;
1186 UINT cchWritten, cchRemaining;
1188 size_t cchCopyRemaining;
1200 pwszEnd = pwszResult + cchWritten;
1201 cchRemaining = cchResultMax - cchWritten;
1203 cchRemaining = (
UINT)cchCopyRemaining;
1207 pwszEnd += cchWritten;
1208 cchRemaining -= cchWritten;
1223 UINT cchRemaining = cchResult;
1224 size_t cchCopyRemaining;
1225 LPWSTR pwszEnd = pwszResult;
1236 cchRemaining -= cchWritten;
1237 pwszEnd += cchWritten;
1240 cchRemaining = (
UINT)cchCopyRemaining;
1257 IN INT SelectedImage,
1266 Insert.hParent = hParent;
1267 Insert.item.pszText = lpText;
1268 Insert.item.iImage =
Image;
1269 Insert.item.iSelectedImage = SelectedImage;
1270 Insert.item.lParam =
lParam;
1324 if (EventLog->LogName)
1327 if (EventLog->ComputerName)
1330 if (EventLog->FileName)
1346 pStr = (
PWSTR)MultiStr;
1347 while (*pStr) pStr += (
wcslen(pStr) + 1);
1348 Length = MultiStr - pStr + 2;
1377 if (!EventLogFilter)
1381 EventLogFilter->
Warning = Warning;
1398 return EventLogFilter;
1404 if (EventLogFilter->Sources)
1407 if (EventLogFilter->Users)
1410 if (EventLogFilter->ComputerNames)
1473 if (ComputerName && *ComputerName)
1476 while (*ComputerName ==
L'\\')
1506 if (ComputerName && *ComputerName)
1511 if (*lpFullFileName && lpFullFileName[1] ==
L':')
1512 lpFullFileName[1] =
L'$';
1517 lpFullFileName[0] =
L'\\';
1518 lpFullFileName[1] =
L'\\';
1519 wcsncpy(lpFullFileName + 2, ComputerName,
wcslen(ComputerName));
1520 lpFullFileName[2 +
wcslen(ComputerName)] =
L'\\';
1606 pevlr->EventCategory,
1627 if (pevlr->EventCategory != 0)
1647 WCHAR SourceModuleName[1024];
1648 WCHAR ParameterModuleName[1024];
1651 LPWSTR szStringArray, szMessage;
1655 szStringArray = (
LPWSTR)((
LPBYTE)pevlr + pevlr->StringOffset);
1666 if (!IsParamModNameCached)
1673 if (IsParamModNameCached)
1678 szMessage = szStringArray;
1691 for (
i = 0;
i < pevlr->NumStrings;
i++)
1693 szMessage +=
wcslen(szMessage) + 1;
1695 cch = szMessage - szStringArray;
1698 szMessage = szStringArray;
1699 for (
i = 0;
i < pevlr->NumStrings;
i++)
1701 lpMsgBuf = szMessage;
1702 while ((lpMsgBuf =
wcsstr(lpMsgBuf,
L"%%")))
1706 MoveMemory(lpMsgBuf, lpMsgBuf+1, ((szStringArray +
cch) - lpMsgBuf - 1) *
sizeof(
WCHAR));
1710 szArguments[
i] = szMessage;
1711 szMessage +=
wcslen(szMessage) + 1;
1736 lpMsgBuf = szMessage;
1757 szMessage = szStringArray;
1758 for (
i = 0;
i < pevlr->NumStrings;
i++)
1762 szMessage +=
wcslen(szMessage) + 1;
1773 switch (dwEventType)
1807 WCHAR szDomain[1024];
1814 pCurrentSid = (
PSID)((
LPBYTE)pelr + pelr->UserSidOffset);
1821 else if (*pLastSid &&
EqualSid(*pLastSid, pCurrentSid))
1827 if (pelr->UserSidLength > 0)
1892 if ((pevlr->EventType ==
EVENTLOG_SUCCESS && !EventLogFilter->Information ) ||
1918 if (!*FilterString && !*
String)
1927 if ( (!*FilterString && *
String) || (*FilterString && !*
String) )
1936 pStr = FilterString;
1945 pStr += (
wcslen(pStr) + 1);
1973 DWORD dwTotalRecords = 0, dwCurrentRecord = 0;
1975 size_t cchRemaining;
1983 UINT uStep = 0, uStepAt = 0, uPos = 0;
1996 PWCHAR lpTitleTemplateEnd;
2008 EventLog = EventLogFilter->
EventLogs[0];
2020 &lpTitleTemplateEnd,
2024 dwMaxLength = (
DWORD)cchRemaining;
2031 sizeof(szStatusText),
2042 L"Many-logs filtering is not implemented yet!!",
2072 EventLog = EventLogFilter->
EventLogs[LogIndex];
2080 if (hEventLog ==
NULL)
2091 if (dwTotalRecords > 0)
2118 uStepAt = (dwTotalRecords / 100) + 1;
2137 dwWanted = dwNeeded;
2153 pEvlrBuffer = (
LPBYTE)pEvlr;
2154 pEvlrEnd = pEvlrBuffer + dwRead;
2156 while (pEvlrBuffer < pEvlrEnd)
2159 PWSTR lpszUsername, lpszCategoryName;
2164 if (uStep % uStepAt == 0)
2193 lpszUsername =
GetEventUserName(pEvlrTmp, &pLastSid, szUsername) ? szUsername : szNoUsername;
2201 lpszCategoryName =
GetEventCategory(EventLog->
LogName, lpszSourceName, pEvlrTmp, szCategory) ? szCategory : szNoCategory;
2210 lviEventItem.
iItem = 0;
2213 lviEventItem.
pszText = szEventTypeText;
2250 pEvlrBuffer += pEvlrTmp->
Length;
2283 sizeof(szStatusText),
2388 if (!EventLogFilter)
2450 tvItemEx.
hItem = hti;
2455 *phti = tvItemEx.
hItem;
2482 if (EventLog ==
NULL)
2493 if (EventLogFilter ==
NULL)
2505 cchFileName =
wcslen(lpszFileName) + 1;
2512 2, 3, (
LPARAM)EventLogFilter);
2550 if (!EventLogFilter)
2563 EventLog = EventLogFilter->EventLogs[0];
2584 if (!EventLogFilter)
2625 if (!EventLogFilter)
2653 EventLog = EventLogFilter->EventLogs[0];
2677 if (!EventLogFilter)
2690 wcex.
cbSize =
sizeof(wcex);
2722 DWORD dwType, cbData;
2723 DWORD dwMessageID = 0;
2773 cbData =
sizeof(dwMessageID);
2783 *pdwMessageID = dwMessageID;
2796 HKEY hEventLogKey, hLogKey;
2797 DWORD dwNumLogs = 0;
2798 DWORD dwIndex, dwMaxKeyLength;
2859 for (dwIndex = 0; dwIndex < dwNumLogs; dwIndex++)
2861 lpcName = dwMaxKeyLength;
2871 if (EventLog ==
NULL)
2879 if (EventLogFilter ==
NULL)
2971 2, 3, (
LPARAM)EventLogFilter);
2976 hItemDefault =
hItem;
3062 rs =
Settings.wpPos.rcNormalPosition;
3120 (rcClient.
bottom - rcClient.
top) - StatusHeight,
3176 : (rcClient.
bottom - rcClient.
top) - StatusHeight,
3204 for (iColumn = 0; iColumn <
ARRAYSIZE(columnItems); ++iColumn)
3206 lvc.
cx = columnItems[iColumn].width;
3282 :
cy - StatusHeight,
3337 if (pnmv->
iItem == -1)
3340 L"No selected items!",
3350#ifdef LVN_ITEMACTIVATE
3405 while (*pszText &&
iswspace(*pszText))
3493 if (EventLogFilter &&
ClearEvents(EventLogFilter))
3518 if (bNewest !=
Settings.bNewestEventsFirst)
3520 Settings.bNewestEventsFirst = bNewest;
3617 L"Help not implemented yet!",
3675 hInfo.
pt.
y = yPos - rc.
top;
3849 DWORD dwMaxSize = 0, dwRetention = 0;
3885 cbData =
sizeof(dwMaxSize);
3896 dwMaxSize = 16384 * 1024;
3901 cbData =
sizeof(dwRetention);
3915 dwRetention = (dwRetention + 24*3600 - 1) / (24*3600);
4007 if (dwRetention == 0)
4039 DWORD dwMaxSize = 0, dwRetention = 0;
4086 sizeof(dwRetention));
4137 if (EventLogFilter &&
ClearEvents(EventLogFilter))
4199 L"Help not implemented yet!",
4224 if (!EventLogFilter)
4236 psh.
dwSize =
sizeof(psh);
4248 psp[0].
dwSize =
sizeof(psp[0]);
4257 psp[1].
dwSize =
sizeof(psp[1]);
4308 rcWnd.
right - sbVXSize,
4389 L"Help not implemented yet!",
#define InterlockedIncrement
#define InterlockedDecrement
#define IDC_UPDOWN_EVENTS_AGE
#define IDS_NOT_AVAILABLE
#define IDM_EVENT_DETAILS_VIEW
#define IDD_LOGPROPERTIES_GENERAL
#define IDM_OPEN_EVENTLOG
#define IDC_OVERWRITE_AS_NEEDED
#define IDS_RESTOREDEFAULTS
#define IDI_CLOSED_CATEGORY
#define IDS_EVENTLOG_INFORMATION_TYPE
#define IDS_EVENTLOG_SUCCESS
#define IDI_OPENED_CATEGORY
#define IDS_COLUMNCOMPUTER
#define IDC_UPDOWN_MAXLOGSIZE
#define IDM_CLOSE_EVENTLOG
#define IDC_OVERWRITE_OLDER_THAN
#define IDS_EVENTSTRINGIDNOTFOUND
#define IDC_CREATED_LABEL
#define IDM_RENAME_EVENTLOG
#define IDM_EVENTLOG_SETTINGS
#define IDI_AUDITFAILUREICON
#define IDM_LIST_GRID_LINES
#define IDI_AUDITSUCCESSICON
#define IDM_EVENT_DETAILS
#define IDS_CLEAREVENTS_MSG
#define IDC_EDIT_MAXLOGSIZE
#define IDI_INFORMATIONICON
#define IDS_EVENTLOG_AUDIT_FAILURE
#define IDS_EVENTLOG_ERROR_TYPE
#define IDS_EVENTLOG_SYSTEM
#define IDM_SAVE_SETTINGS
#define IDM_SAVE_EVENTLOG
#define IDC_MODIFIED_LABEL
#define IDC_EDIT_EVENTS_AGE
#define IDD_EVENTDETAILS_DLG
#define IDC_RESTOREDEFAULTS
#define IDS_EVENTLOG_WARNING_TYPE
#define IDC_ACCESSED_LABEL
#define IDS_EVENTLOG_UNKNOWN_TYPE
#define IDS_EVENTLOG_AUDIT_SUCCESS
#define IDS_COLUMNCATEGORY
#define IDS_EVENTLOG_USER
#define RegCloseKey(hKey)
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
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 RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
BOOL WINAPI LookupAccountSidW(LPCWSTR pSystemName, PSID pSid, LPWSTR pAccountName, LPDWORD pdwAccountName, LPWSTR pDomainName, LPDWORD pdwDomainName, PSID_NAME_USE peUse)
HANDLE WINAPI OpenEventLogW(IN LPCWSTR lpUNCServerName, IN LPCWSTR lpSourceName)
BOOL WINAPI ClearEventLogW(IN HANDLE hEventLog, IN LPCWSTR lpBackupFileName)
BOOL WINAPI CloseEventLog(IN HANDLE hEventLog)
BOOL WINAPI GetNumberOfEventLogRecords(IN HANDLE hEventLog, OUT PDWORD NumberOfRecords)
HANDLE WINAPI OpenBackupEventLogW(IN LPCWSTR lpUNCServerName, IN LPCWSTR lpFileName)
BOOL WINAPI BackupEventLogW(IN HANDLE hEventLog, IN LPCWSTR lpBackupFileName)
BOOL WINAPI ReadEventLogW(IN HANDLE hEventLog, IN DWORD dwReadFlags, IN DWORD dwRecordOffset, OUT LPVOID lpBuffer, IN DWORD nNumberOfBytesToRead, OUT DWORD *pnBytesRead, OUT DWORD *pnMinNumberOfBytesNeeded)
BOOL WINAPI ConvertSidToStringSidW(PSID Sid, LPWSTR *StringSid)
BOOL WINAPI IsValidSid(PSID pSid)
BOOL WINAPI EqualSid(PSID pSid1, PSID pSid2)
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW lppsh)
BOOL WINAPI GetOpenFileNameW(OPENFILENAMEW *ofn)
BOOL WINAPI GetSaveFileNameW(LPOPENFILENAMEW ofn)
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
static DWORD DWORD * dwLength
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
BOOL WINAPI GetFileAttributesExW(LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
LPWSTR WINAPI GetCommandLineW(VOID)
DWORD WINAPI ResumeThread(IN HANDLE hThread)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
BOOL WINAPI SystemTimeToFileTime(IN CONST SYSTEMTIME *lpSystemTime, OUT LPFILETIME lpFileTime)
BOOL WINAPI FileTimeToLocalFileTime(IN CONST FILETIME *lpFileTime, OUT LPFILETIME lpLocalFileTime)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
static const WCHAR Cleanup[]
#define InterlockedExchangePointer(Target, Value)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
BOOL GetEventCategory(IN LPCWSTR KeyName, IN LPCWSTR SourceName, IN PEVENTLOGRECORD pevlr, OUT PWCHAR CategoryName)
WCHAR szEmptyList[MAX_LOADSTRING]
#define EVENT_DLL_SEPARATOR
DWORD GetExpandedFilePathName(IN LPCWSTR ComputerName OPTIONAL, IN LPCWSTR lpFileName, OUT LPWSTR lpFullFileName OPTIONAL, IN DWORD nSize)
DWORD ApplyParameterStringsToMessage(IN LPCWSTR lpMessageDllList, IN BOOL bMessagePreFormatted, IN CONST LPCWSTR pMessage, OUT LPWSTR *pFinalMessage)
static const LPCWSTR SystemLogs[]
VOID EventLogFilter_Free(IN PEVENTLOGFILTER EventLogFilter)
VOID ShowWin32Error(IN DWORD dwError)
static const LPCWSTR EVNTVWR_PARAM_KEY
VOID EventLog_Free(IN PEVENTLOG EventLog)
PEVENTLOGFILTER ActiveFilter
PEVENTLOGFILTER GetSelectedFilter(OUT HTREEITEM *phti OPTIONAL)
static DWORD WINAPI StartStopEnumEventsThread(IN LPVOID lpParameter)
LONG EventLogFilter_AddRef(IN PEVENTLOGFILTER EventLogFilter)
PEVENTLOG AllocEventLog(IN PCWSTR ComputerName OPTIONAL, IN PCWSTR LogName, IN BOOL Permanent)
VOID BuildLogListAndFilterList(IN LPCWSTR lpComputerName)
BOOL GetEventMessage(IN LPCWSTR KeyName, IN LPCWSTR SourceName, IN PEVENTLOGRECORD pevlr, OUT PWCHAR EventText)
BOOL GetDisplayNameFileAndID(IN LPCWSTR lpLogName, OUT PWCHAR lpModuleName, OUT PDWORD pdwMessageID)
VOID ResizeWnd(INT cx, INT cy)
ATOM MyRegisterClass(HINSTANCE)
LONG EventLogFilter_Release(IN PEVENTLOGFILTER EventLogFilter)
VOID EventTimeToSystemTime(IN DWORD EventTime, OUT PSYSTEMTIME pSystemTime)
BOOL ProcessCmdLine(IN LPWSTR lpCmdLine)
VOID CloseUserEventLog(IN PEVENTLOGFILTER EventLogFilter, IN HTREEITEM hti)
BOOL FilterByString(IN PCWSTR FilterString, IN PWSTR String)
LPWSTR GetMessageStringFromDll(IN LPCWSTR lpMessageDll, IN DWORD dwFlags, IN DWORD dwMessageId, IN DWORD nSize, IN va_list *Arguments OPTIONAL)
#define EVENT_CATEGORY_MESSAGE_FILE
VOID OpenUserEventLogFile(IN LPCWSTR lpszFileName)
WCHAR szTitleTemplate[MAX_LOADSTRING]
WCHAR szStatusBarTemplate[MAX_LOADSTRING]
BOOL GetEventMessageFileDLL(IN LPCWSTR lpLogName, IN LPCWSTR SourceName, IN LPCWSTR EntryName, OUT PWCHAR lpModuleName)
WCHAR szLoadingWait[MAX_LOADSTRING]
INT_PTR CALLBACK EventLogPropProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
BOOL FilterByType(IN PEVENTLOGFILTER EventLogFilter, IN PEVENTLOGRECORD pevlr)
static const LPCWSTR EVENTVWR_WNDCLASS
LIST_ENTRY EventLogFilterList
BOOL GetEventUserName(IN PEVENTLOGRECORD pelr, IN OUT PSID *pLastSid, OUT PWCHAR pszUser)
UINT FormatInteger(LONGLONG Num, LPWSTR pwszResult, UINT cchResultMax)
static const LPCWSTR EVENTLOG_BASE_KEY
struct _SETTINGS * PSETTINGS
BOOL GetFileTimeString(LPFILETIME lpFileTime, LPWSTR pwszResult, UINT cchResult)
#define EVENT_MESSAGE_EVENTTEXT_BUFFER
LPWSTR lpszzUserLogsToLoad
PWSTR AllocAndCopyMultiStr(IN PCWSTR MultiStr OPTIONAL)
VOID GetEventType(IN WORD dwEventType, OUT PWCHAR eventTypeText)
BOOL ClearEvents(IN PEVENTLOGFILTER EventLogFilter)
static VOID FreeRecords(VOID)
UINT FormatByteSize(LONGLONG cbSize, LPWSTR pwszResult, UINT cchResultMax)
#define EVENT_PARAMETER_MESSAGE_FILE
int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM)
LPWSTR GetMessageStringFromDllList(IN LPCWSTR lpMessageDllList, IN DWORD dwFlags, IN DWORD dwMessageId, IN DWORD nSize, IN va_list *Arguments OPTIONAL)
PEVENTLOGRECORD * g_RecordPtrs
HANDLE hStartStopEnumEvent
WCHAR szSaveFilter[MAX_LOADSTRING]
VOID FreeLogFilterList(VOID)
VOID EnumEvents(IN PEVENTLOGFILTER EventLogFilter)
VOID OpenUserEventLog(VOID)
static VOID SavePropertiesDlg(HWND hDlg, PEVENTLOG EventLog)
INT_PTR EventLogProperties(HINSTANCE, HWND, PEVENTLOGFILTER)
PEVENTLOGFILTER EnumFilter
HTREEITEM TreeViewAddItem(IN HWND hTreeView, IN HTREEITEM hParent, IN LPWSTR lpText, IN INT Image, IN INT SelectedImage, IN LPARAM lParam)
static HWND hWndDetailsCtrl
#define EVENT_MESSAGE_FILE_BUFFER
VOID SaveEventLog(IN PEVENTLOGFILTER EventLogFilter)
INT_PTR CALLBACK EventDetails(HWND, UINT, WPARAM, LPARAM)
PEVENTLOGFILTER AllocEventLogFilter(IN BOOL Information, IN BOOL Warning, IN BOOL Error, IN BOOL AuditSuccess, IN BOOL AuditFailure, IN PCWSTR Sources OPTIONAL, IN PCWSTR Users OPTIONAL, IN PCWSTR ComputerNames OPTIONAL, IN ULONG NumOfEventLogs, IN PEVENTLOG *EventLogs)
struct _SETTINGS SETTINGS
static DWORD WINAPI EnumEventsThread(IN LPVOID lpParameter)
#define EVENT_MESSAGE_FILE
WCHAR szTitle[MAX_LOADSTRING]
LPWSTR FormatFileSizeWithBytes(const PULARGE_INTEGER lpQwSize, LPWSTR pwszResult, UINT cchResultMax)
BOOL InitInstance(HINSTANCE)
static VOID InitPropertiesDlg(HWND hDlg, PEVENTLOG EventLog)
#define ProgressBar_SetRange(hwndCtl, range)
#define ROUND_DOWN(n, align)
#define ProgressBar_SetPos(hwndCtl, pos)
struct _EVENTLOG * PEVENTLOG
#define StatusBar_SetText(hwndCtl, index, data)
#define StatusBar_GetItemRect(hwndCtl, index, lprc)
#define ProgressBar_SetStep(hwndCtl, inc)
#define EnableDlgItem(hDlg, nID, bEnable)
struct _EVENTLOGFILTER * PEVENTLOGFILTER
VOID EnableEventDetailsButtons(HWND hWnd, BOOL bEnable)
HWND CreateEventDetailsCtrl(HINSTANCE hInstance, HWND hParentWnd, LPARAM lParam)
struct _EVENTDETAIL_INFO * PEVENTDETAIL_INFO
struct _FileName FileName
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLint GLint GLsizei width
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HLOCAL NTAPI LocalFree(HLOCAL hMem)
_Check_return_ _CRTIMP int __cdecl swscanf(_In_z_ const wchar_t *_Src, _In_z_ _Scanf_format_string_ const wchar_t *_Format,...)
_Check_return_ _CRTIMP int __cdecl _wtoi(_In_z_ const wchar_t *_Str)
_Check_return_ _CRTIMP long __cdecl _wtol(_In_z_ const wchar_t *_Str)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
#define EXCEPTION_EXECUTE_HANDLER
#define InterlockedCompareExchangePointer
enum _SID_NAME_USE SID_NAME_USE
LPCWSTR LPCWSTR szModuleName
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static DWORD DWORD void LPSTR DWORD cch
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
INT_PTR CALLBACK GeneralPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
#define REG_OPTION_NON_VOLATILE
#define LOCALE_USER_DEFAULT
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define WS_OVERLAPPEDWINDOW
static const WCHAR szName[]
#define PropSheet_Changed(d, w)
#define PropSheet_UnChanged(d, w)
#define PSH_PROPSHEETPAGE
_Out_opt_ int _Out_opt_ int * cy
#define ListView_InsertItem(hwnd, pitem)
#define ListView_SetExtendedListViewStyleEx(hwndLV, dwMask, dw)
#define TreeView_SelectItem(hwnd, hitem)
#define ListView_InsertColumn(hwnd, iCol, pcol)
#define TVN_BEGINLABELEDIT
#define ListView_SetImageList(hwnd, himl, iImageList)
#define LVS_EX_HEADERDRAGDROP
#define LVS_SHOWSELALWAYS
#define TreeView_EnsureVisible(hwnd, hitem)
#define TreeView_GetParent(hwnd, hitem)
#define TVS_SHOWSELALWAYS
#define ListView_GetNextItem(hwnd, i, flags)
#define TreeView_GetSelection(hwnd)
#define TreeView_GetItem(hwnd, pitem)
#define LVS_EX_FULLROWSELECT
#define ListView_GetItemCount(hwnd)
struct tagNMITEMACTIVATE * LPNMITEMACTIVATE
#define ListView_SetExtendedListViewStyle(hwndLV, dw)
struct tagNMLISTVIEW * LPNMLISTVIEW
#define ListView_DeleteAllItems(hwnd)
#define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_)
#define ImageList_AddIcon(himl, hicon)
#define TreeView_EditLabel(hwnd, hitem)
#define INDEXTOOVERLAYMASK(i)
#define TreeView_SetImageList(hwnd, himl, iImage)
#define TreeView_HitTest(hwnd, lpht)
#define TreeView_InsertItem(hwnd, lpis)
#define TVIF_SELECTEDIMAGE
#define ICC_LISTVIEW_CLASSES
#define TreeView_DeleteItem(hwnd, hitem)
#define _SEH2_EXCEPT(...)
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_CRT_RESTORE_GCC_WARNINGS _Check_return_ _CRTIMP wchar_t *__cdecl wcstok(_Inout_opt_z_ wchar_t *_Str, _In_z_ const wchar_t *_Delim)
LPWSTR *WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int *numargs)
BOOL WINAPI ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon)
PULONG MinorVersion OPTIONAL
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchCopyExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchPrintfExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCbPrintfW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchCopyNW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToCopy)
STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
base of all file and directory entries
PEVENTLOG EventLogs[ANYSIZE_ARRAY]
DWORD WINAPI WaitForMultipleObjects(IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
#define LANG_USER_DEFAULT
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define FIELD_OFFSET(t, f)
#define CONTAINING_RECORD(address, type, field)
struct _LARGE_INTEGER::@2379 u
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
_In_ LPCSTR _Out_writes_to_opt_ cchDisplayName LPSTR lpDisplayName
DWORD WINAPI GetLastError(void)
#define FORMAT_MESSAGE_MAX_WIDTH_MASK
#define LOAD_LIBRARY_AS_DATAFILE
#define FORMAT_MESSAGE_IGNORE_INSERTS
#define FORMAT_MESSAGE_FROM_SYSTEM
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
#define FORMAT_MESSAGE_FROM_HMODULE
_In_ LPCSTR _Out_writes_bytes_to_opt_ cbSid PSID _Inout_ LPDWORD _Out_writes_to_opt_ cchReferencedDomainName LPSTR _Inout_ LPDWORD _Out_ PSID_NAME_USE peUse
*nSize LPSTR _Inout_ LPDWORD nSize
_In_ PSID _Out_writes_to_opt_ cchName LPSTR _Inout_ LPDWORD cchName
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define EVENTLOG_ERROR_TYPE
#define EVENTLOG_SEQUENTIAL_READ
#define EVENTLOG_AUDIT_FAILURE
#define EVENTLOG_INFORMATION_TYPE
#define EVENTLOG_AUDIT_SUCCESS
#define EVENTLOG_BACKWARDS_READ
#define EVENTLOG_FORWARDS_READ
#define EVENTLOG_WARNING_TYPE
struct _EVENTLOGRECORD * PEVENTLOGRECORD
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
#define RegConnectRegistry
HWND WINAPI GetFocus(void)
HWND WINAPI SetCapture(_In_ HWND hWnd)
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define GetWindowLongPtrW
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI ReleaseCapture(void)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
BOOL WINAPI GetWindowPlacement(_In_ HWND, _Inout_ WINDOWPLACEMENT *)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
HWND WINAPI GetCapture(void)
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
DWORD WINAPI CheckMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
UINT WINAPI IsDlgButtonChecked(_In_ HWND, _In_ int)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetDlgItemInt(_In_ HWND, _In_ int, _In_ UINT, _In_ BOOL)
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
HWND WINAPI SetFocus(_In_opt_ HWND)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI UpdateWindow(_In_ HWND)
struct tagNMHDR * LPNMHDR
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI CheckMenuRadioItem(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT, _In_ UINT)
HWND WINAPI GetParent(_In_ HWND)
HACCEL WINAPI LoadAcceleratorsW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define SBS_SIZEBOXBOTTOMRIGHTALIGN
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
BOOL WINAPI CheckRadioButton(_In_ HWND, _In_ int, _In_ int, _In_ int)
#define MB_ICONINFORMATION
int WINAPI TranslateAcceleratorW(_In_ HWND, _In_ HACCEL, _In_ LPMSG)
HDWP WINAPI DeferWindowPos(_In_ HDWP, _In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
UINT WINAPI GetDlgItemInt(_In_ HWND, _In_ int, _Out_opt_ PBOOL, _In_ BOOL)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
#define MAKEINTRESOURCEW(i)
HMENU WINAPI LoadMenuW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define SetWindowLongPtrW
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HMENU WINAPI GetMenu(_In_ HWND)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
HDWP WINAPI BeginDeferWindowPos(_In_ int)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO