24#define COPY_EVTTEXT_SPACE_PADDING_MODE
27#define EVENT_MESSAGE_EVENTTEXT_BUFFER (1024*10)
71 static const WORD lvColsToDlgItemIDs[] =
80 INT iItem = pDetailData->iEventItem;
97 PWSTR pszBuffer = szEventText;
101 pszBuffer = szSource;
108 szEventText,
_countof(szEventText));
119 szEventText,
_countof(szEventText));
143 for (
i = 0;
i < uLength;
i++)
150 for (
i = 0;
i < 9 - uLength;
i++)
157 for (
i = 0;
i < uLength;
i++)
186 for (
i = 0;
i < uLength /
sizeof(
ULONG);
i++)
194 for (
i = (uLength /
sizeof(
ULONG)) *
sizeof(
ULONG);
i < uLength;
i++)
211 BOOL bDisplayWords = pDetailData->bDisplayWords;
215 UINT uBufferSize, uLineLength;
216 PWCHAR pTextBuffer, pLine;
247 pLine = pLine + uLineLength;
267#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE
284 else if ((ucs >= 0x1100 && ucs <= 0x115F) || (ucs >= 0x302E && ucs <= 0x302F) ||
285 (ucs >= 0x3131 && ucs <= 0x318E) || (ucs >= 0x3260 && ucs <= 0x327F) ||
286 (ucs >= 0xA960 && ucs <= 0xA97C) || (ucs >= 0xAC00 && ucs <= 0xD7A3))
312 for (pwt = pwType;
n-- > 0; ++pwt, ++
pwcs)
359#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE
360 static const LONG nTabWidth = 4;
372#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE
390#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE
392 UINT nMaxHdrWidth = 0;
404#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE
420 if ((CopyData[
i].cchInfoLen == 0) && CopyData[
i].bOptional)
425 size += CopyData[
i].cchHdrLen;
427 if (CopyData[
i].bSameLine)
430#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE
435 CopyData[
i].nHdrWidth =
my_wcswidth(CopyData[
i].pchHdrText, CopyData[
i].cchHdrLen);
436 nMaxHdrWidth =
max(nMaxHdrWidth, CopyData[
i].nHdrWidth);
452 size += CopyData[
i].cchInfoLen;
455#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE
460 UINT nSpaceWidth = 1;
461 nMaxHdrWidth = ((nMaxHdrWidth / nTabWidth) + 1) * nTabWidth;
465 if ((CopyData[
i].cchInfoLen == 0) && CopyData[
i].bOptional)
469 if (!CopyData[
i].bSameLine)
473 CopyData[
i].nSpacesPad = (nMaxHdrWidth - CopyData[
i].nHdrWidth) / nSpaceWidth;
474 size += CopyData[
i].nSpacesPad;
503 if ((CopyData[
i].cchInfoLen == 0) && CopyData[
i].bOptional)
508 CopyData[
i].pchHdrText, CopyData[
i].cchHdrLen,
509 &pszDestEnd, &cchRemaining, 0);
511 if (CopyData[
i].bSameLine)
515#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE
518 UINT j = CopyData[
i].nSpacesPad;
521 *pszDestEnd++ =
L' ';
528 *pszDestEnd++ =
L'\t';
536 &pszDestEnd, &cchRemaining, 0);
540 sizeDataStr =
min(cchRemaining, CopyData[
i].cchInfoLen + 1);
542 pszDestEnd += sizeDataStr;
543 cchRemaining -= sizeDataStr;
547 &pszDestEnd, &cchRemaining, 0);
591 txtRange.chrg = penLink->
chrg;
592 txtRange.lpstrText = pLink;
619 pOriginXY = &
pData->scPos.x;
624 pOriginXY = &
pData->scPos.y;
628 sInfo.
cbSize =
sizeof(sInfo);
676 if (oldPos != sInfo.
nPos)
681 *pOriginXY = sInfo.
nPos;
684 (scOldPos.
x -
pData->scPos.x),
685 (scOldPos.
y -
pData->scPos.y),
704 INT sbVXSize, sbHYSize;
724 if (cx < pData->
cxMin)
cy -= sbHYSize;
725 if (cy < pData->
cyMin)
cx -= sbVXSize;
728 sInfo.
cbSize =
sizeof(sInfo);
732 scOldPos.
y = sInfo.
nPos;
734 scOldPos.
y =
pData->scPos.y;
756 sInfo.
nPos = scOldPos.
y;
761 rect.left =
cx - sbVXSize;
770 scOldPos.
x = sInfo.
nPos;
772 scOldPos.
x =
pData->scPos.x;
794 sInfo.
nPos = scOldPos.
x;
806 if ((scOldPos.
x !=
pData->scPos.x) || (scOldPos.
y !=
pData->scPos.y))
810 (
pData->scPos.x - scOldPos.
x),
812 (
pData->scPos.y - scOldPos.
y),
819 pData->scPos = scOldPos;
1058 if (
pData->iEventItem != -1)
1103 pData->iEventItem = -1;
1125 if (
pData->hMonospaceFont)
1135 pData->iEventItem = -1;
1148 if (!
pData->EventLogFilter)
1152 if ((
pData->iEventItem == -1) && (iEventItem != -1))
1159 if ((
pData->iEventItem != -1) && (iEventItem == -1))
1166 pData->iEventItem = iEventItem;
1169 if (
pData->iEventItem != -1)
1207 if (iItem < 0 || iItem >=
nItems)
1222 iItem = (bPrev ? (
nItems - 1) : 0);
1244 pData->iEventItem = iItem;
1247 if (
pData->EventLogFilter)
1253 if (
pData->EventLogFilter)
1260 if (
pData->EventLogFilter)
#define IDC_EVENTCOMPUTERSTATIC
#define IDD_EVENTDETAILS_CTRL
#define IDC_EVENTDATESTATIC
#define IDC_EVENTUSERSTATIC
#define IDS_CONTFROMBEGINNING
#define IDC_EVENTTYPESTATIC
#define IDC_EVENTTIMESTATIC
#define IDC_EVENTDATAEDIT
#define IDC_EVENTSOURCESTATIC
#define IDC_EVENTCATEGORYSTATIC
#define IDC_EVENTTEXTEDIT
#define IDC_DETAILS_STATIC
#define IDC_EVENTIDSTATIC
#define HeapFree(x, y, z)
BOOL WINAPI GetStringTypeW(DWORD type, LPCWSTR src, INT count, LPWORD chartype)
#define EnableDlgItem(hDlg, nID, bEnable)
struct _EVENTLOGFILTER * PEVENTLOGFILTER
static int my_cType3ToWidth(WORD wType, wchar_t ucs)
static VOID CopyEventEntry(_In_ HWND hWnd)
Retrieves the already-gathered event information, structure it in text format and copy it into the cl...
BOOL GetEventMessage(_In_ PCWSTR KeyName, _In_ PCWSTR SourceName, _In_ PEVENTLOGRECORD pevlr, _Out_writes_z_(cchText) PWSTR EventText, _In_ SIZE_T cchText)
static VOID OnScroll(HWND hDlg, PDETAILDATA pData, INT nBar, WORD sbCode)
static VOID InitDetailsDlgCtrl(HWND hDlg, PDETAILDATA pData)
static INT_PTR CALLBACK EventDetailsCtrl(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static HFONT CreateMonospaceFont(VOID)
int my_wcwidth(wchar_t ucs)
int my_wcswidth(const wchar_t *pwcs, size_t n)
#define EVENT_MESSAGE_EVENTTEXT_BUFFER
struct _DETAILDATA * PDETAILDATA
static VOID DisplayEventData(_In_ HWND hDlg, _In_ PDETAILDATA pDetailData)
static VOID EnableNavigationArrows(_In_ HWND hDlg, _In_ BOOL bEnable)
static VOID OnLink(HWND hDlg, ENLINK *penLink)
static UINT PrintByteDataLine(PWCHAR pBuffer, UINT uOffset, PBYTE pData, UINT uLength)
static UINT PrintWordDataLine(PWCHAR pBuffer, UINT uOffset, PULONG pData, UINT uLength)
static VOID ClearContents(_In_ HWND hDlg)
static VOID DisplayEvent(_In_ HWND hDlg, _In_ PDETAILDATA pDetailData)
struct _DETAILDATA DETAILDATA
HWND CreateEventDetailsCtrl(HINSTANCE hInstance, HWND hParentWnd, LPARAM lParam)
static VOID OnSize(HWND hDlg, PDETAILDATA pData, INT cx, INT cy)
struct _EVENTDETAIL_INFO * PEVENTDETAIL_INFO
GLint GLint GLint GLint GLint GLint y
GLdouble GLdouble GLdouble r
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
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 GLint GLint j
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
#define _Out_writes_z_(s)
_Out_opt_ int _Out_opt_ int * cy
#define ListView_SetItemState(hwndLV, i, data, mask)
#define ListView_GetItemText(hwndLV, i, iSubItem_, pszText_, cchTextMax_)
#define ListView_GetNextItem(hwnd, i, flags)
#define ListView_GetItemCount(hwnd)
#define ListView_GetItem(hwnd, pitem)
#define ListView_EnsureVisible(hwndLV, i, fPartialOK)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
STRSAFEAPI StringCchCopyExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCchCopyNExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToCopy, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
WCHAR lfFaceName[LF_FACESIZE]
PEVENTLOGFILTER EventLogFilter
PEVENTLOGFILTER EventLogFilter
PEVENTLOG EventLogs[ANYSIZE_ARRAY]
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
_In_z_ const wchar_t * pwcs
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
struct _EVENTLOGRECORD * PEVENTLOGRECORD
HWND WINAPI CreateDialogParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
DWORD WINAPI GetSysColor(_In_ int)
#define GetWindowLongPtrW
#define SW_SCROLLCHILDREN
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)
HANDLE WINAPI SetClipboardData(_In_ UINT, _In_opt_ HANDLE)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
BOOL WINAPI CloseClipboard(void)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
#define SW_SHOWNOACTIVATE
BOOL WINAPI OpenClipboard(_In_opt_ HWND)
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
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)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI EmptyClipboard(void)
struct tagNMHDR * LPNMHDR
HDC WINAPI GetDC(_In_opt_ HWND)
int WINAPI GetWindowTextLengthW(_In_ HWND)
HDWP WINAPI DeferWindowPos(_In_ HDWP, _In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
int WINAPI SetScrollInfo(_In_ HWND, _In_ int, _In_ LPCSCROLLINFO, _In_ BOOL)
BOOL WINAPI ShowScrollBar(_In_ HWND, _In_ int, _In_ BOOL)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
#define MAKEINTRESOURCEW(i)
#define SetWindowLongPtrW
BOOL WINAPI GetScrollInfo(_In_ HWND, _In_ int, _Inout_ LPSCROLLINFO)
int WINAPI ScrollWindowEx(_In_ HWND, _In_ int, _In_ int, _In_opt_ LPCRECT, _In_opt_ LPCRECT, _In_opt_ HRGN, _Out_opt_ LPRECT, _In_ UINT)
int WINAPI GetSystemMetrics(_In_ int)
SHORT WINAPI GetKeyState(_In_ int)
HDWP WINAPI BeginDeferWindowPos(_In_ int)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)