Reactos
at master 66 lines 1.6 kB view raw
1/* 2 * PROJECT: ReactOS CabView Shell Extension 3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) 4 * PURPOSE: DLL entry point 5 * COPYRIGHT: Copyright 2024 Whindmar Saksit <whindsaks@proton.me> 6 */ 7 8#include "cabview.h" 9 10#include <initguid.h> 11DEFINE_GUID(CLSID_CabFolder, 0x0CD7A5C0,0x9F37,0x11CE,0xAE,0x65,0x08,0x00,0x2B,0x2E,0x12,0x62); 12 13CComModule g_Module; 14 15BEGIN_OBJECT_MAP(ObjectMap) 16 OBJECT_ENTRY(CLSID_CabFolder, CCabFolder) 17END_OBJECT_MAP() 18 19EXTERN_C BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) 20{ 21 switch (dwReason) 22 { 23 case DLL_PROCESS_ATTACH: 24 DisableThreadLibraryCalls(hInstance); 25 g_Module.Init(ObjectMap, hInstance, NULL); 26 break; 27 } 28 29 return TRUE; 30} 31 32STDAPI DllCanUnloadNow() 33{ 34 return g_Module.DllCanUnloadNow(); 35} 36 37STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) 38{ 39 return g_Module.DllGetClassObject(rclsid, riid, ppv); 40} 41 42STDAPI DllRegisterServer() 43{ 44 HRESULT hr; 45 46 hr = g_Module.DllRegisterServer(FALSE); 47 if (FAILED_UNEXPECTEDLY(hr)) 48 return hr; 49 50 hr = g_Module.UpdateRegistryFromResource(IDR_FOLDER, TRUE, NULL); 51 if (FAILED(hr)) 52 return hr; 53 54 return S_OK; 55} 56 57STDAPI DllUnregisterServer() 58{ 59 HRESULT hr1 = g_Module.DllUnregisterServer(FALSE); 60 HRESULT hr2 = g_Module.UpdateRegistryFromResource(IDR_FOLDER, FALSE, NULL); 61 if (FAILED_UNEXPECTEDLY(hr1)) 62 return hr1; 63 if (FAILED_UNEXPECTEDLY(hr2)) 64 return hr2; 65 return S_OK; 66}