ReactOS 0.4.17-dev-243-g1369312
misc.h
Go to the documentation of this file.
1#pragma once
2
3#include <atlstr.h>
4#include "appinfo.h"
5
6#ifdef _M_IX86
7#define CurrentArchitecture L"x86"
8#elif defined(_M_AMD64)
9#define CurrentArchitecture L"amd64"
10#elif defined(_M_ARM)
11#define CurrentArchitecture L"arm"
12#elif defined(_M_ARM64)
13#define CurrentArchitecture L"arm64"
14#elif defined(_M_IA64)
15#define CurrentArchitecture L"ia64"
16#elif defined(_M_PPC)
17#define CurrentArchitecture L"ppc"
18#endif
19
20template<class T> struct Deleter
21{
22 Deleter(T ptr) : p(ptr) {}
23 ~Deleter () { delete p; }
25};
26
27static inline HRESULT
29{
31}
32
33static inline UINT
35{
36 // Attempt to extract the original Win32 error code from the HRESULT
38 return LOWORD(hr);
39 else
40 return hr >= 0 ? ERROR_SUCCESS : hr;
41}
42
43UINT
45
46VOID
48VOID
49ShowPopupMenuEx(HWND hwnd, HWND hwndOwner, UINT MenuID, UINT DefaultItem, POINT *Point = NULL);
50VOID
52UINT
54BOOL
56UINT
58BOOL
60BOOL
62
63VOID
64InitLogs();
65VOID
66FreeLogs();
67BOOL
68WriteLogMessage(WORD wType, DWORD dwEventID, LPCWSTR lpMsg);
69BOOL
70GetInstalledVersion(CStringW *pszVersion, const CStringW &szRegName);
71
72typedef struct
73{
79
80static inline BOOL
81NotifyFileExtractCallback(const CStringW &ItemPath, UINT64 UncompressedSize, UINT FileAttributes,
83{
84 EXTRACTCALLBACKINFO eci = { ItemPath, UncompressedSize, FileAttributes };
85 return Callback ? Callback(eci, Cookie) : TRUE;
86}
87
88BOOL
89ExtractFilesFromCab(const CStringW &szCabName, const CStringW &szCabDir, const CStringW &szOutputDir,
91BOOL
92ExtractFilesFromCab(LPCWSTR FullCabPath, const CStringW &szOutputDir,
94
95BOOL
99
100INT
102
103void
104UnixTimeToFileTime(DWORD dwUnixTime, LPFILETIME pFileTime);
105
106BOOL
107SearchPatternMatch(LPCWSTR szHaystack, LPCWSTR szNeedle);
108
109BOOL
110IsSameRegKey(HKEY hRoot, LPCWSTR Path1, REGSAM Sam1, LPCWSTR Path2, REGSAM Sam2);
115
116bool
118
119template <class T> static CStringW
120BuildPath(const T &Base, LPCWSTR Append)
121{
123 SIZE_T len = path.GetLength();
124 if (len && path[len - 1] != L'\\' && path[len - 1] != L'/')
125 path += L'\\';
126 while (*Append == L'\\' || *Append == L'/')
127 ++Append;
128 return path + Append;
129}
130
132SplitFileAndDirectory(LPCWSTR FullPath, CStringW *pDir = NULL);
133BOOL
135UINT
143
144template <class T> class CLocalPtr : public CHeapPtr<T, CLocalAllocator>
145{
146};
147
149{
151
153 {
155 if (m_hMutex && !InitialOwner)
156 {
158 if (wait != WAIT_OBJECT_0 && wait != WAIT_ABANDONED)
159 {
161 m_hMutex = NULL;
162 }
163 }
164 }
166 {
167 if (m_hMutex)
168 {
171 }
172 }
173
174 bool Acquired() const { return m_hMutex != NULL; }
175};
176
178GuessInstallerType(LPCWSTR Installer, UINT &ExtraInfo);
179
180BOOL
PRTL_UNICODE_STRING_BUFFER Path
COMPILER_DEPENDENT_UINT64 UINT64
Definition: actypes.h:131
InstallerType
Definition: appinfo.h:82
HRESULT GetKnownPath(REFKNOWNFOLDERID kfid, CStringW &Path, DWORD Flags=KF_FLAG_CREATE)
Definition: misc.cpp:594
BOOL(CALLBACK * EXTRACTCALLBACK)(const EXTRACTCALLBACKINFO &Info, void *Cookie)
Definition: misc.h:78
BOOL WriteLogMessage(WORD wType, DWORD dwEventID, LPCWSTR lpMsg)
Definition: misc.cpp:323
bool ExpandEnvStrings(CStringW &Str)
Definition: misc.cpp:527
HRESULT GetSpecialPath(UINT csidl, CStringW &Path, HWND hwnd=NULL)
Definition: misc.cpp:585
UINT WaitForProcess(HANDLE hProcess)
Definition: misc.cpp:178
static CStringW BuildPath(const T &Base, LPCWSTR Append)
Definition: misc.h:120
BOOL StartProcess(const CStringW &Path, BOOL Wait)
Definition: misc.cpp:203
BOOL GetStorageDirectory(CStringW &lpDirectory)
Definition: misc.cpp:241
BOOL GetInstalledVersion(CStringW *pszVersion, const CStringW &szRegName)
Definition: misc.cpp:376
BOOL OpensWithExplorer(PCWSTR Path)
Definition: misc.cpp:164
VOID EmulateDialogReposition(HWND hwnd)
Definition: misc.cpp:63
BOOL GetSilentInstallParameters(InstallerType InstallerType, UINT ExtraInfo, LPCWSTR Installer, CStringW &Parameters)
Definition: misc.cpp:714
BOOL DeleteDirectoryTree(LPCWSTR Dir, HWND hwnd=NULL)
Definition: misc.cpp:553
UINT ClassifyFile(PCWSTR Path)
Definition: misc.cpp:127
UINT CreateDirectoryTree(LPCWSTR Dir)
Definition: misc.cpp:566
static BOOL NotifyFileExtractCallback(const CStringW &ItemPath, UINT64 UncompressedSize, UINT FileAttributes, EXTRACTCALLBACK Callback, void *Cookie)
Definition: misc.h:81
HRESULT RegKeyHasValues(HKEY hKey, LPCWSTR Path, REGSAM wowsam=0)
Definition: misc.cpp:486
BOOL IsSameRegKey(HKEY hRoot, LPCWSTR Path1, REGSAM Sam1, LPCWSTR Path2, REGSAM Sam2)
Definition: misc.cpp:476
InstallerType GuessInstallerType(LPCWSTR Installer, UINT &ExtraInfo)
Definition: misc.cpp:637
BOOL ExtractFilesFromCab(const CStringW &szCabName, const CStringW &szCabDir, const CStringW &szOutputDir, EXTRACTCALLBACK Callback=NULL, void *Cookie=NULL)
Definition: cabinet.cpp:250
VOID ShowPopupMenuEx(HWND hwnd, HWND hwndOwner, UINT MenuID, UINT DefaultItem, POINT *Point=NULL)
Definition: misc.cpp:82
VOID InitLogs()
Definition: misc.cpp:276
VOID FreeLogs()
Definition: misc.cpp:314
static UINT ErrorFromHResult(HRESULT hr)
Definition: misc.h:34
INT GetSystemColorDepth()
Definition: misc.cpp:409
VOID CopyTextToClipboard(LPCWSTR lpszText)
Definition: misc.cpp:30
BOOL SearchPatternMatch(LPCWSTR szHaystack, LPCWSTR szNeedle)
Definition: misc.cpp:544
LPCWSTR GetRegString(CRegKey &Key, LPCWSTR Name, CStringW &Value)
Definition: misc.cpp:504
HRESULT GetProgramFilesPath(CStringW &Path, BOOL PerUser, HWND hwnd=NULL)
Definition: misc.cpp:609
CStringW SplitFileAndDirectory(LPCWSTR FullPath, CStringW *pDir=NULL)
Definition: misc.cpp:573
BOOL IsSystem64Bit()
Definition: misc.cpp:386
ULONG GetNTVersion()
Definition: misc.cpp:399
void UnixTimeToFileTime(DWORD dwUnixTime, LPFILETIME pFileTime)
Definition: misc.cpp:449
UINT ErrorBox(HWND hOwner, UINT Error=GetLastError())
Definition: misc.cpp:18
BOOL Error
Definition: chkdsk.c:66
HRESULT hr
Definition: delayimp.cpp:582
#define ERROR_SUCCESS
Definition: deptool.c:10
LPWSTR Name
Definition: desk.c:124
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define CloseHandle
Definition: compat.h:739
#define CALLBACK
Definition: compat.h:35
#define L(x)
Definition: resources.c:13
#define INFINITE
Definition: serial.h:102
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG FileAttributes
Definition: fltkernel.h:1236
FxAutoRegKey hKey
GLfloat GLfloat p
Definition: glext.h:8902
GLenum GLsizei len
Definition: glext.h:6722
#define HResultFromWin32
Definition: loader.cpp:14
_In_ BOOL _In_ HANDLE hProcess
Definition: mapping.h:71
static PVOID ptr
Definition: dispmode.c:27
static HTREEITEM hRoot
Definition: treeview.c:383
unsigned int UINT
Definition: ndis.h:50
_In_opt_ ULONG Base
Definition: rtlfuncs.h:2486
#define BOOL
Definition: nt_native.h:43
#define LOWORD(l)
Definition: pedump.c:82
static ULONG Timeout
Definition: ping.c:61
#define T(num)
Definition: thunks.c:311
_In_opt_ LPCSTR lpDirectory
Definition: shellapi.h:496
@ KF_FLAG_CREATE
Definition: shlobj.h:106
~CScopedMutex()
Definition: misc.h:165
CScopedMutex(LPCWSTR Name, UINT Timeout=INFINITE, BOOL InitialOwner=FALSE)
Definition: misc.h:152
bool Acquired() const
Definition: misc.h:174
HANDLE m_hMutex
Definition: misc.h:150
Definition: misc.h:21
~Deleter()
Definition: misc.h:23
T p
Definition: misc.h:24
Deleter(T ptr)
Definition: misc.h:22
const CStringW & ItemPath
Definition: misc.h:74
UINT64 UncompressedSize
Definition: misc.h:75
UINT FileAttributes
Definition: misc.h:76
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexW(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL, IN BOOL bInitialOwner, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:525
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseMutex(IN HANDLE hMutex)
Definition: synch.c:554
const uint16_t * PCWSTR
Definition: typedefs.h:57
const uint16_t * LPCWSTR
Definition: typedefs.h:57
ULONG_PTR SIZE_T
Definition: typedefs.h:80
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG
Definition: typedefs.h:59
#define HIWORD(l)
Definition: typedefs.h:247
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:690
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:170
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
Definition: wdfinterrupt.h:458
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
Definition: wdfio.h:869
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
#define WAIT_ABANDONED
Definition: winbase.h:389
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define WAIT_OBJECT_0
Definition: winbase.h:383
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210
ACCESS_MASK REGSAM
Definition: winreg.h:76
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
_In_opt_ PVOID _Out_ PLARGE_INTEGER Cookie
Definition: cmfuncs.h:14
_In_ BOOLEAN InitialOwner
Definition: kefuncs.h:565