https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d82185f10451b3c6661dda...
commit d82185f10451b3c6661dda8f1a30cb0da114b2ce Author: Mark Jansen mark.jansen@reactos.org AuthorDate: Sun Oct 23 21:16:56 2022 +0200 Commit: Mark Jansen mark.jansen@reactos.org CommitDate: Tue Nov 1 21:24:14 2022 +0100
[SDK] Define CCoInit in shellutils --- dll/shellext/acppage/ACPPage.cpp | 9 +-------- dll/win32/shell32/shlexec.cpp | 18 ++++-------------- modules/rostests/apitests/browseui/ACListISF.cpp | 11 ++--------- modules/rostests/apitests/browseui/IACLCustomMRU.cpp | 11 ++--------- modules/rostests/apitests/browseui/IACLHistory.cpp | 13 +++---------- modules/rostests/apitests/browseui/IAutoComplete.cpp | 8 +------- sdk/include/reactos/shellutils.h | 19 +++++++++++++++++-- 7 files changed, 30 insertions(+), 59 deletions(-)
diff --git a/dll/shellext/acppage/ACPPage.cpp b/dll/shellext/acppage/ACPPage.cpp index 14f4f632b01..6c265336af0 100644 --- a/dll/shellext/acppage/ACPPage.cpp +++ b/dll/shellext/acppage/ACPPage.cpp @@ -75,18 +75,11 @@ STDAPI DllUnregisterServer() return S_OK; }
-struct CCoInit -{ - CCoInit() { hres = CoInitialize(NULL); } - ~CCoInit() { if (SUCCEEDED(hres)) { CoUninitialize(); } } - HRESULT hres; -}; - EXTERN_C BOOL WINAPI GetExeFromLnk(PCWSTR pszLnk, PWSTR pszExe, size_t cchSize) { CCoInit init; - if (FAILED_UNEXPECTEDLY(init.hres)) + if (FAILED_UNEXPECTEDLY(init.hr)) return FALSE;
CComPtr<IShellLinkW> spShellLink; diff --git a/dll/win32/shell32/shlexec.cpp b/dll/win32/shell32/shlexec.cpp index f1fce51cc9f..133c3b11c2a 100644 --- a/dll/win32/shell32/shlexec.cpp +++ b/dll/win32/shell32/shlexec.cpp @@ -1430,24 +1430,14 @@ end: return r; }
-namespace -{ - struct CCoInit - { - CCoInit() { hres = CoInitialize(NULL); } - ~CCoInit() { if (SUCCEEDED(hres)) { CoUninitialize(); } } - HRESULT hres; - }; -} - static HRESULT shellex_load_object_and_run(HKEY hkey, LPCGUID guid, LPSHELLEXECUTEINFOW sei) { TRACE("%p %s %p\n", hkey, debugstr_guid(guid), sei);
CCoInit coInit;
- if (FAILED_UNEXPECTEDLY(coInit.hres)) - return coInit.hres; + if (FAILED_UNEXPECTEDLY(coInit.hr)) + return coInit.hr;
CComPtr<IShellExtInit> obj; HRESULT hr = CoCreateInstance(*guid, NULL, CLSCTX_INPROC_SERVER, @@ -1519,8 +1509,8 @@ static HRESULT ShellExecute_ContextMenuVerb(LPSHELLEXECUTEINFOW sei)
CCoInit coInit;
- if (FAILED_UNEXPECTEDLY(coInit.hres)) - return coInit.hres; + if (FAILED_UNEXPECTEDLY(coInit.hr)) + return coInit.hr;
CComPtr<IContextMenu> cm; HRESULT hr = shellex_get_contextmenu(sei, cm); diff --git a/modules/rostests/apitests/browseui/ACListISF.cpp b/modules/rostests/apitests/browseui/ACListISF.cpp index ab87cb492ef..34516bf4a50 100644 --- a/modules/rostests/apitests/browseui/ACListISF.cpp +++ b/modules/rostests/apitests/browseui/ACListISF.cpp @@ -722,19 +722,12 @@ static void GetEnvStatus() trace("Show hidden folders: %s\n", g_ShowHidden ? "yes" : "no"); }
-struct CCoInit -{ - CCoInit() { hres = CoInitialize(NULL); } - ~CCoInit() { if (SUCCEEDED(hres)) { CoUninitialize(); } } - HRESULT hres; -}; - START_TEST(ACListISF) { GetEnvStatus(); CCoInit init; - ok_hr(init.hres, S_OK); - if (!SUCCEEDED(init.hres)) + ok_hr(init.hr, S_OK); + if (!SUCCEEDED(init.hr)) { skip("CoInitialize failed\n"); return; diff --git a/modules/rostests/apitests/browseui/IACLCustomMRU.cpp b/modules/rostests/apitests/browseui/IACLCustomMRU.cpp index 89eb058261d..3627a8f3591 100644 --- a/modules/rostests/apitests/browseui/IACLCustomMRU.cpp +++ b/modules/rostests/apitests/browseui/IACLCustomMRU.cpp @@ -32,13 +32,6 @@ ULONG DbgPrint(PCH Format,...); #define ok_wstri(x, y) \ ok(lstrcmpiW(x, y) == 0, "Wrong string. Expected '%S', got '%S'\n", y, x)
-struct CCoInit -{ - CCoInit() { hres = CoInitialize(NULL); } - ~CCoInit() { if (SUCCEEDED(hres)) { CoUninitialize(); } } - HRESULT hres; -}; -
DEFINE_GUID(IID_IACLCustomMRU, 0xf729fc5e, 0x8769, 0x4f3e, 0xbd, 0xb2, 0xd7, 0xb5, 0x0f, 0xd2, 0x27, 0x5b); static const WCHAR szTestPath[] = L"TESTPATH_BROWSEUI_APITEST"; @@ -551,8 +544,8 @@ test_IACLCustomMRU_TypedURLs() // TypedURLs is special case START_TEST(IACLCustomMRU) { CCoInit init; - ok_hex(init.hres, S_OK); - if (!SUCCEEDED(init.hres)) + ok_hex(init.hr, S_OK); + if (!SUCCEEDED(init.hr)) return;
test_IACLCustomMRU_Basics(); diff --git a/modules/rostests/apitests/browseui/IACLHistory.cpp b/modules/rostests/apitests/browseui/IACLHistory.cpp index 68d25dc0a6a..e57ba165304 100644 --- a/modules/rostests/apitests/browseui/IACLHistory.cpp +++ b/modules/rostests/apitests/browseui/IACLHistory.cpp @@ -14,20 +14,13 @@ #include <stdio.h> #include <shellutils.h>
-struct CCoInit -{ - CCoInit() { hres = CoInitialize(NULL); } - ~CCoInit() { if (SUCCEEDED(hres)) { CoUninitialize(); } } - HRESULT hres; -}; - START_TEST(IACLHistory) { CCoInit init; - ok_hex(init.hres, S_OK); - if (FAILED(init.hres)) + ok_hex(init.hr, S_OK); + if (FAILED(init.hr)) { - skip("CoInitialize failed with 0x%08lX\n", init.hres); + skip("CoInitialize failed with 0x%08lX\n", init.hr); return; }
diff --git a/modules/rostests/apitests/browseui/IAutoComplete.cpp b/modules/rostests/apitests/browseui/IAutoComplete.cpp index d65478e2c5e..6afff3d181b 100644 --- a/modules/rostests/apitests/browseui/IAutoComplete.cpp +++ b/modules/rostests/apitests/browseui/IAutoComplete.cpp @@ -16,6 +16,7 @@ #include <atlsimpcoll.h> #include <shlwapi.h> #include <strsafe.h> +#include <shellutils.h>
//#define MANUAL_DEBUGGING
@@ -23,13 +24,6 @@ #define ok_wstri(x, y) \ ok(lstrcmpiW(x, y) == 0, "Wrong string. Expected '%S', got '%S'\n", y, x)
-struct CCoInit -{ - CCoInit() { hr = CoInitialize(NULL); } - ~CCoInit() { if (SUCCEEDED(hr)) { CoUninitialize(); } } - HRESULT hr; -}; - // create an EDIT control static HWND MyCreateEditCtrl(INT x, INT y, INT cx, INT cy) { diff --git a/sdk/include/reactos/shellutils.h b/sdk/include/reactos/shellutils.h index f516d8c6830..9ccce4d3373 100644 --- a/sdk/include/reactos/shellutils.h +++ b/sdk/include/reactos/shellutils.h @@ -129,9 +129,8 @@ IUnknown *CComCreatorCentralInstance<T>::s_pInstance = NULL; #define DECLARE_CENTRAL_INSTANCE_NOT_AGGREGATABLE(x) \ public: \ typedef CComCreatorCentralInstance< ATL::CComObject<x> > _CreatorClass; -#endif
-#ifdef __cplusplus + template <class Base> class CComDebugObject : public Base { @@ -538,6 +537,22 @@ void DumpIdList(LPCITEMIDLIST pcidl) DbgPrint("End IDList Dump.\n"); }
+struct CCoInit +{ + CCoInit() + { + hr = CoInitialize(NULL); + } + ~CCoInit() + { + if (SUCCEEDED(hr)) + { + CoUninitialize(); + } + } + HRESULT hr; +}; + #endif /* __cplusplus */
#define S_LESSTHAN 0xffff