ReactOS  0.4.14-dev-49-gfb4591c
misc.h File Reference
#include <windef.h>
#include <atlstr.h>
Include dependency graph for misc.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  CConfigParser
 

Functions

INT GetWindowWidth (HWND hwnd)
 
INT GetWindowHeight (HWND hwnd)
 
INT GetClientWindowWidth (HWND hwnd)
 
INT GetClientWindowHeight (HWND hwnd)
 
VOID CopyTextToClipboard (LPCWSTR lpszText)
 
VOID SetWelcomeText ()
 
VOID ShowPopupMenu (HWND hwnd, UINT MenuID, UINT DefaultItem)
 
BOOL StartProcess (ATL::CStringW &Path, BOOL Wait)
 
BOOL StartProcess (LPWSTR lpPath, BOOL Wait)
 
BOOL GetStorageDirectory (ATL::CStringW &lpDirectory)
 
VOID InitLogs ()
 
VOID FreeLogs ()
 
BOOL WriteLogMessage (WORD wType, DWORD dwEventID, LPCWSTR lpMsg)
 
BOOL GetInstalledVersion (ATL::CStringW *pszVersion, const ATL::CStringW &szRegName)
 
BOOL ExtractFilesFromCab (const ATL::CStringW &szCabName, const ATL::CStringW &szCabDir, const ATL::CStringW &szOutputDir)
 

Function Documentation

◆ CopyTextToClipboard()

VOID CopyTextToClipboard ( LPCWSTR  lpszText)

Definition at line 48 of file misc.cpp.

49 {
50  if (!OpenClipboard(NULL))
51  {
52  return;
53  }
54 
55  HRESULT hr;
56  HGLOBAL ClipBuffer;
57  LPWSTR Buffer;
59 
61  cchBuffer = wcslen(lpszText) + 1;
62  ClipBuffer = GlobalAlloc(GMEM_DDESHARE, cchBuffer * sizeof(WCHAR));
63 
64  Buffer = (PWCHAR) GlobalLock(ClipBuffer);
65  hr = StringCchCopyW(Buffer, cchBuffer, lpszText);
66  GlobalUnlock(ClipBuffer);
67 
68  if (SUCCEEDED(hr))
69  SetClipboardData(CF_UNICODETEXT, ClipBuffer);
70 
72 }
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:368
HRESULT hr
Definition: shlfolder.c:183
uint16_t * PWCHAR
Definition: typedefs.h:54
HANDLE WINAPI SetClipboardData(_In_ UINT, _In_opt_ HANDLE)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:149
static DWORD cchBuffer
Definition: fusion.c:83
#define CF_UNICODETEXT
Definition: constants.h:408
smooth NULL
Definition: ftsmooth.c:416
Definition: bufpool.h:45
BOOL WINAPI EmptyClipboard(void)
Definition: ntwrapper.h:190
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
BOOL WINAPI CloseClipboard(void)
Definition: ntwrapper.h:178
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
Definition: heapmem.c:755
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
Definition: heapmem.c:1190
#define GMEM_DDESHARE
Definition: winbase.h:295
BOOL WINAPI OpenClipboard(_In_opt_ HWND)
WCHAR * LPWSTR
Definition: xmlstorage.h:184
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by CMainWindow::OnCommand().

◆ ExtractFilesFromCab()

BOOL ExtractFilesFromCab ( const ATL::CStringW szCabName,
const ATL::CStringW szCabDir,
const ATL::CStringW szOutputDir 
)

Definition at line 257 of file cabinet.cpp.

260 {
261  HINSTANCE hCabinetDll;
262  HFDI ExtractHandler;
263  ERF ExtractErrors;
264  ATL::CStringA szCabNameUTF8, szCabDirUTF8, szOutputDirUTF8;
265  fnFDICreate pfnFDICreate;
266  fnFDICopy pfnFDICopy;
267  fnFDIDestroy pfnFDIDestroy;
268  BOOL bResult;
269 
270  // Load cabinet.dll and extract needed functions
271  hCabinetDll = LoadLibraryW(L"cabinet.dll");
272 
273  if (!hCabinetDll)
274  {
275  return FALSE;
276  }
277 
278  pfnFDICreate = (fnFDICreate) GetProcAddress(hCabinetDll, "FDICreate");
279  pfnFDICopy = (fnFDICopy) GetProcAddress(hCabinetDll, "FDICopy");
280  pfnFDIDestroy = (fnFDIDestroy) GetProcAddress(hCabinetDll, "FDIDestroy");
281 
282  if (!pfnFDICreate || !pfnFDICopy || !pfnFDIDestroy)
283  {
284  FreeLibrary(hCabinetDll);
285  return FALSE;
286  }
287 
288  // Create FDI context
289  ExtractHandler = pfnFDICreate(fnMemAlloc,
290  fnMemFree,
291  fnFileOpen,
292  fnFileRead,
293  fnFileWrite,
294  fnFileClose,
295  fnFileSeek,
296  cpuUNKNOWN,
297  &ExtractErrors);
298 
299  if (!ExtractHandler)
300  {
301  FreeLibrary(hCabinetDll);
302  return FALSE;
303  }
304 
305  // Create output dir
306  bResult = CreateDirectoryW(szOutputDir, NULL);
307 
308  if (bResult || GetLastError() == ERROR_ALREADY_EXISTS)
309  {
310  // Convert wide strings to UTF-8
311  bResult = WideToMultiByte(szCabName, szCabNameUTF8, CP_UTF8);
312  bResult &= WideToMultiByte(szCabDir, szCabDirUTF8, CP_UTF8);
313  bResult &= WideToMultiByte(szOutputDir, szOutputDirUTF8, CP_UTF8);
314  }
315 
316  // Perform extraction
317  if (bResult)
318  {
319  // Add a slash to cab name as required by the api
320  szCabNameUTF8 = "\\" + szCabNameUTF8;
321 
322  bResult = pfnFDICopy(ExtractHandler,
323  (LPSTR) szCabNameUTF8.GetString(),
324  (LPSTR) szCabDirUTF8.GetString(),
325  0,
326  fnNotify,
327  NULL,
328  (void FAR *) szOutputDirUTF8.GetString());
329  }
330 
331  pfnFDIDestroy(ExtractHandler);
332  FreeLibrary(hCabinetDll);
333  return bResult;
334 }
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
Definition: dir.c:90
BOOL(* fnFDIDestroy)(HFDI)
Definition: cabinet.cpp:251
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
char * LPSTR
Definition: xmlstorage.h:182
#define CP_UTF8
Definition: nls.h:20
#define cpuUNKNOWN
Definition: fdi.h:269
unsigned int BOOL
Definition: ntddk_ex.h:94
HFDI(* fnFDICreate)(PFNALLOC, PFNFREE, PFNOPEN, PFNREAD, PFNWRITE, PFNCLOSE, PFNSEEK, int, PERF)
Definition: cabinet.cpp:233
Definition: fci.h:44
#define FAR
Definition: guiddef.h:36
#define LoadLibraryW(x)
Definition: compat.h:404
smooth NULL
Definition: ftsmooth.c:416
BOOL WideToMultiByte(const CStringW &szSource, CStringA &szDest, UINT Codepage)
Definition: cabinet.cpp:25
#define FreeLibrary(x)
Definition: compat.h:405
PCXSTR GetString() const
Definition: atlsimpstr.h:361
static const WCHAR L[]
Definition: oid.c:1250
BOOL(* fnFDICopy)(HFDI, LPSTR, LPSTR, INT, PFNFDINOTIFY, PFNFDIDECRYPT, void FAR *pvUser)
Definition: cabinet.cpp:243
#define GetProcAddress(x, y)
Definition: compat.h:410
#define ERROR_ALREADY_EXISTS
Definition: disk.h:80

Referenced by CAvailableApps::UpdateAppsDB().

◆ FreeLogs()

VOID FreeLogs ( )

Definition at line 232 of file misc.cpp.

233 {
234  if (hLog)
235  {
237  }
238 }
static HANDLE hLog
Definition: misc.cpp:14
BOOL WINAPI DeregisterEventSource(IN HANDLE hEventLog)
Definition: eventlog.c:473

Referenced by CMainWindow::ProcessWindowMessage(), and wmain().

◆ GetClientWindowHeight()

INT GetClientWindowHeight ( HWND  hwnd)

Definition at line 40 of file misc.cpp.

41 {
42  RECT Rect;
43 
45  return (Rect.bottom - Rect.top);
46 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
struct Rect Rect

◆ GetClientWindowWidth()

INT GetClientWindowWidth ( HWND  hwnd)

Definition at line 32 of file misc.cpp.

33 {
34  RECT Rect;
35 
37  return (Rect.right - Rect.left);
38 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
struct Rect Rect

◆ GetInstalledVersion()

BOOL GetInstalledVersion ( ATL::CStringW pszVersion,
const ATL::CStringW szRegName 
)

Definition at line 301 of file misc.cpp.

302 {
303  return (!szRegName.IsEmpty()
304  && (GetInstalledVersion_WowUser(pszVersion, szRegName, TRUE, KEY_WOW64_32KEY)
305  || GetInstalledVersion_WowUser(pszVersion, szRegName, FALSE, KEY_WOW64_32KEY)
306  || GetInstalledVersion_WowUser(pszVersion, szRegName, TRUE, KEY_WOW64_64KEY)
307  || GetInstalledVersion_WowUser(pszVersion, szRegName, FALSE, KEY_WOW64_64KEY)));
308 }
#define TRUE
Definition: types.h:120
#define KEY_WOW64_64KEY
Definition: cmtypes.h:46
bool IsEmpty() const
Definition: atlsimpstr.h:379
#define KEY_WOW64_32KEY
Definition: cmtypes.h:45
BOOL GetInstalledVersion_WowUser(ATL::CStringW *szVersionResult, const ATL::CStringW &szRegName, BOOL IsUserKey, REGSAM keyWow)
Definition: misc.cpp:257

Referenced by CAvailableApplicationInfo::RetrieveInstalledStatus(), and CAvailableApplicationInfo::RetrieveInstalledVersion().

◆ GetStorageDirectory()

BOOL GetStorageDirectory ( ATL::CStringW lpDirectory)

Definition at line 172 of file misc.cpp.

173 {
175  {
176  Directory.ReleaseBuffer();
177  return FALSE;
178  }
179 
180  Directory.ReleaseBuffer();
181  Directory += L"\\rapps";
182 
183  return (CreateDirectoryW(Directory.GetString(), NULL) || GetLastError() == ERROR_ALREADY_EXISTS);
184 }
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
Definition: dir.c:90
#define TRUE
Definition: types.h:120
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
smooth NULL
Definition: ftsmooth.c:416
#define CSIDL_LOCAL_APPDATA
Definition: shlobj.h:2030
#define MAX_PATH
Definition: compat.h:26
static const WCHAR L[]
Definition: oid.c:1250
BOOL WINAPI SHGetSpecialFolderPathW(HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate)
Definition: shellpath.c:2566
base for all directory entries
Definition: entries.h:138
#define ERROR_ALREADY_EXISTS
Definition: disk.h:80

Referenced by AvailableStrings::AvailableStrings(), CConfigParser::GetINIFullPath(), and CDownloadManager::ThreadFunc().

◆ GetWindowHeight()

INT GetWindowHeight ( HWND  hwnd)

Definition at line 24 of file misc.cpp.

25 {
26  RECT Rect;
27 
29  return (Rect.bottom - Rect.top);
30 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
struct Rect Rect

◆ GetWindowWidth()

INT GetWindowWidth ( HWND  hwnd)

Definition at line 16 of file misc.cpp.

17 {
18  RECT Rect;
19 
21  return (Rect.right - Rect.left);
22 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
struct Rect Rect

◆ InitLogs()

VOID InitLogs ( )

Definition at line 186 of file misc.cpp.

187 {
189  {
190  return;
191  }
192 
194  DWORD dwCategoryNum = 1;
195  DWORD dwDisp, dwData;
197 
198  if (key.Create(HKEY_LOCAL_MACHINE,
199  L"SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\ReactOS Application Manager",
201  {
202  return;
203  }
204 
206  {
207  return;
208  }
209 
212 
213  if ((key.SetStringValue(L"EventMessageFile",
214  szPath,
216  && (key.SetStringValue(L"CategoryMessageFile",
217  szPath,
219  && (key.SetDWORDValue(L"TypesSupported",
220  dwData) == ERROR_SUCCESS)
221  && (key.SetDWORDValue(L"CategoryCount",
222  dwCategoryNum) == ERROR_SUCCESS))
223 
224  {
225  hLog = RegisterEventSourceW(NULL, L"ReactOS Application Manager");
226  }
227 
228  key.Close();
229 }
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:609
#define ERROR_SUCCESS
Definition: deptool.c:10
#define _countof(array)
Definition: fontsub.cpp:30
static HANDLE ULONG_PTR dwData
Definition: file.c:35
#define EVENTLOG_ERROR_TYPE
Definition: winnt_old.h:2630
smooth NULL
Definition: ftsmooth.c:416
SETTINGS_INFO SettingsInfo
Definition: winmain.cpp:18
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
#define KEY_WRITE
Definition: nt_native.h:1031
#define EVENTLOG_INFORMATION_TYPE
Definition: winnt_old.h:2632
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define EVENTLOG_WARNING_TYPE
Definition: winnt_old.h:2631
#define MAX_PATH
Definition: compat.h:26
static HANDLE hLog
Definition: misc.cpp:14
unsigned long DWORD
Definition: ntddk_ex.h:95
static const WCHAR L[]
Definition: oid.c:1250
HKEY key
Definition: reg.c:42
BOOL bLogEnabled
Definition: winmain.h:9
LPCWSTR szPath
Definition: env.c:35
#define REG_EXPAND_SZ
Definition: nt_native.h:1494
#define REG_NONE
Definition: nt_native.h:1492
HANDLE WINAPI RegisterEventSourceW(IN LPCWSTR lpUNCServerName, IN LPCWSTR lpSourceName)
Definition: eventlog.c:1295
Definition: path.c:42
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12

Referenced by wmain(), and wWinMain().

◆ SetWelcomeText()

VOID SetWelcomeText ( )

◆ ShowPopupMenu()

VOID ShowPopupMenu ( HWND  hwnd,
UINT  MenuID,
UINT  DefaultItem 
)

Definition at line 74 of file misc.cpp.

75 {
76  HMENU hMenu = NULL;
77  HMENU hPopupMenu;
78  MENUITEMINFO ItemInfo;
79  POINT pt;
80 
81  if (MenuID)
82  {
83  hMenu = LoadMenuW(hInst, MAKEINTRESOURCEW(MenuID));
84  hPopupMenu = GetSubMenu(hMenu, 0);
85  }
86  else
87  {
88  hPopupMenu = GetMenu(hwnd);
89  }
90 
91  ZeroMemory(&ItemInfo, sizeof(ItemInfo));
92  ItemInfo.cbSize = sizeof(ItemInfo);
93  ItemInfo.fMask = MIIM_STATE;
94 
95  GetMenuItemInfoW(hPopupMenu, DefaultItem, FALSE, &ItemInfo);
96 
97  if (!(ItemInfo.fState & MFS_GRAYED))
98  {
99  SetMenuDefaultItem(hPopupMenu, DefaultItem, FALSE);
100  }
101 
102  GetCursorPos(&pt);
103 
105  TrackPopupMenu(hPopupMenu, 0, pt.x, pt.y, 0, hMainWnd, NULL);
106 
107  if (hMenu)
108  {
109  DestroyMenu(hMenu);
110  }
111 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define pt(x, y)
Definition: drawing.c:79
#define ZeroMemory
Definition: winbase.h:1635
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
Definition: cursoricon.c:2635
#define MIIM_STATE
Definition: winuser.h:716
smooth NULL
Definition: ftsmooth.c:416
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
HWND hMainWnd
Definition: magnifier.c:32
#define MFS_GRAYED
Definition: winuser.h:746
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
BOOL WINAPI DestroyMenu(_In_ HMENU)
HINSTANCE hInst
Definition: dxdiag.c:13
BOOL WINAPI SetMenuDefaultItem(_In_ HMENU, _In_ UINT, _In_ UINT)
HMENU WINAPI LoadMenuW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
BOOL WINAPI SetForegroundWindow(_In_ HWND)
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
HMENU WINAPI GetMenu(_In_ HWND)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)

Referenced by CMainWindow::OnLink(), and CMainWindow::ProcessWindowMessage().

◆ StartProcess() [1/2]

BOOL StartProcess ( ATL::CStringW Path,
BOOL  Wait 
)

Definition at line 113 of file misc.cpp.

114 {
115  return StartProcess(const_cast<LPWSTR>(Path.GetString()), Wait);;
116 }
PRTL_UNICODE_STRING_BUFFER Path
BOOL StartProcess(ATL::CStringW &Path, BOOL Wait)
Definition: misc.cpp:113
IN BOOLEAN Wait
Definition: fatprocs.h:1529

Referenced by UninstallApplication().

◆ StartProcess() [2/2]

BOOL StartProcess ( LPWSTR  lpPath,
BOOL  Wait 
)

Definition at line 118 of file misc.cpp.

119 {
121  STARTUPINFOW si;
122  DWORD dwRet;
123  MSG msg;
124 
125  ZeroMemory(&si, sizeof(si));
126  si.cb = sizeof(si);
128  si.wShowWindow = SW_SHOW;
129 
130  if (!CreateProcessW(NULL, lpPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
131  {
132  return FALSE;
133  }
134 
135  CloseHandle(pi.hThread);
136 
137  if (Wait)
138  {
140  }
141 
142  while (Wait)
143  {
144  dwRet = MsgWaitForMultipleObjects(1, &pi.hProcess, FALSE, INFINITE, QS_ALLEVENTS);
145  if (dwRet == WAIT_OBJECT_0 + 1)
146  {
147  while (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE))
148  {
151  }
152  }
153  else
154  {
155  if (dwRet == WAIT_OBJECT_0 || dwRet == WAIT_FAILED)
156  break;
157  }
158  }
159 
160  CloseHandle(pi.hProcess);
161 
162  if (Wait)
163  {
167  }
168 
169  return TRUE;
170 }
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define TRUE
Definition: types.h:120
#define CloseHandle
Definition: compat.h:398
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
#define ZeroMemory
Definition: winbase.h:1635
HWND WINAPI SetFocus(_In_opt_ HWND)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
smooth NULL
Definition: ftsmooth.c:416
#define QS_ALLEVENTS
Definition: winuser.h:873
#define STARTF_USESHOWWINDOW
Definition: winbase.h:472
#define SW_SHOW
Definition: winuser.h:769
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
Definition: proc.c:4593
#define WAIT_OBJECT_0
Definition: winbase.h:387
DWORD cb
Definition: winbase.h:817
unsigned long DWORD
Definition: ntddk_ex.h:95
#define WAIT_FAILED
Definition: winbase.h:394
static DWORD pi
Definition: protocol.c:150
DWORD WINAPI MsgWaitForMultipleObjects(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask)
HWND hMainWnd
Definition: magnifier.c:32
WORD wShowWindow
Definition: winbase.h:829
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define msg(x)
Definition: auth_time.c:54
BOOL WINAPI SetForegroundWindow(_In_ HWND)
DWORD dwFlags
Definition: winbase.h:828
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
#define PM_REMOVE
Definition: winuser.h:1182
#define INFINITE
Definition: serial.h:102
IN BOOLEAN Wait
Definition: fatprocs.h:1529

◆ WriteLogMessage()

BOOL WriteLogMessage ( WORD  wType,
DWORD  dwEventID,
LPCWSTR  lpMsg 
)

Definition at line 241 of file misc.cpp.

242 {
244  {
245  return TRUE;
246  }
247 
248  if (!ReportEventW(hLog, wType, 0, dwEventID,
249  NULL, 1, 0, &lpMsg, NULL))
250  {
251  return FALSE;
252  }
253 
254  return TRUE;
255 }
#define TRUE
Definition: types.h:120
smooth NULL
Definition: ftsmooth.c:416
SETTINGS_INFO SettingsInfo
Definition: winmain.cpp:18
static HANDLE hLog
Definition: misc.cpp:14
BOOL WINAPI ReportEventW(IN HANDLE hEventLog, IN WORD wType, IN WORD wCategory, IN DWORD dwEventID, IN PSID lpUserSid, IN WORD wNumStrings, IN DWORD dwDataSize, IN LPCWSTR *lpStrings, IN LPVOID lpRawData)
Definition: eventlog.c:1516
BOOL bLogEnabled
Definition: winmain.h:9

Referenced by CMainWindow::UninstallSelectedApp().