ReactOS  0.4.14-dev-384-g5b37caa
zipfldr.cpp
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS Zip Shell Extension
3  * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4  * PURPOSE: zipfldr entrypoint
5  * COPYRIGHT: Copyright 2017 Mark Jansen (mark.jansen@reactos.org)
6  */
7 
8 #include "precomp.h"
9 
12 
13 #include <initguid.h>
14 
15 DEFINE_GUID(CLSID_ZipFolderStorageHandler, 0xe88dcce0, 0xb7b3, 0x11d1, 0xa9, 0xf0, 0x00, 0xaa, 0x00, 0x60, 0xfa, 0x31);
16 DEFINE_GUID(CLSID_ZipFolderSendTo, 0x888dca60, 0xfc0a, 0x11cf, 0x8f, 0x0f, 0x00, 0xc0, 0x4f, 0xd7, 0xd0, 0x62);
17 DEFINE_GUID(CLSID_ZipFolderContextMenu, 0xb8cdcb65, 0xb1bf, 0x4b42, 0x94, 0x28, 0x1d, 0xfd, 0xb7, 0xee, 0x92, 0xaf);
18 DEFINE_GUID(CLSID_ZipFolderRightDragHandler,0xbd472f60, 0x27fa, 0x11cf, 0xb8, 0xb4, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
19 DEFINE_GUID(CLSID_ZipFolderDropHandler, 0xed9d80b9, 0xd157, 0x457b, 0x91, 0x92, 0x0e, 0x72, 0x80, 0x31, 0x3b, 0xf0);
20 
21 /* IExplorerCommand: Extract All */
22 DEFINE_GUID(CLSID_ZipFolderExtractAllCommand, 0xc3d9647b, 0x8fd9, 0x4ee6, 0x8b, 0xc7, 0x82, 0x7, 0x80, 0x9, 0x10, 0x5a);
23 
24 
25 class CZipFldrModule : public CComModule
26 {
27 public:
28 };
29 
30 
31 BEGIN_OBJECT_MAP(ObjectMap)
35 
37 
38 
39 #include "minizip/ioapi.h"
40 #include "minizip/iowin32.h"
41 
43 
44 static void init_zlib()
45 {
47 }
48 
51 {
52  switch (dwReason)
53  {
54  case DLL_PROCESS_ATTACH:
57  gModule.Init(ObjectMap, hInstance, NULL);
58  init_zlib();
59  break;
60  }
61 
62  return TRUE;
63 }
64 
66 {
67  if (g_ModuleRefCnt)
68  return S_FALSE;
69  return gModule.DllCanUnloadNow();
70 }
71 
73 {
74  return gModule.DllGetClassObject(rclsid, riid, ppv);
75 }
76 
78 {
79  HRESULT hr;
80 
83  return hr;
84 
86  if (FAILED(hr))
87  return hr;
88 
89  return S_OK;
90 }
91 
93 {
94  HRESULT hr;
95 
98  return hr;
99 
101  if (FAILED(hr))
102  return hr;
103 
104  return S_OK;
105 }
106 
107 EXTERN_C
108 BOOL WINAPI
110  IN HWND hWndOwner,
112  IN LPCSTR lpStringArg,
113  IN INT Show)
114 {
115  CStringW path = lpStringArg;
116  PathRemoveBlanksW(path.GetBuffer());
117  path.ReleaseBuffer();
118  path = L"\"" + path + L"\"";
119  ShellExecuteW(NULL, L"open", L"explorer.exe", path.GetString(), NULL, SW_SHOWNORMAL);
120  return TRUE;
121 }
#define STDAPI
Definition: basetyps.h:41
HRESULT DllCanUnloadNow()
Definition: atlbase.h:928
#define IN
Definition: typedefs.h:38
#define REFIID
Definition: guiddef.h:118
#define TRUE
Definition: types.h:120
HRESULT DllRegisterServer(BOOL bRegTypeLib=TRUE)
Definition: atlbase.h:940
EXTERN_C const GUID CLSID_ZipFolderExtractAllCommand
Definition: precomp.h:35
LONG g_ModuleRefCnt
Definition: zipfldr.cpp:11
HRESULT hr
Definition: shlfolder.c:183
STDAPI DllUnregisterServer()
Definition: zipfldr.cpp:92
#define OBJECT_ENTRY(clsid, class)
Definition: atlcom.h:653
REFIID riid
Definition: precomp.h:44
#define REFCLSID
Definition: guiddef.h:117
void fill_win32_filefunc64W(zlib_filefunc64_def *pzlib_filefunc_def)
Definition: iowin32.c:452
REFIID LPVOID * ppv
Definition: atlbase.h:39
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
#define IDR_ZIPFLDR
Definition: resource.h:4
#define DLL_PROCESS_ATTACH
Definition: compat.h:120
VOID WINAPI PathRemoveBlanksW(LPWSTR lpszPath)
Definition: path.c:915
int32_t INT
Definition: typedefs.h:56
DWORD dwReason
Definition: misc.cpp:154
HRESULT Init(_ATL_OBJMAP_ENTRY *p, HINSTANCE, const GUID *plibid)
Definition: atlbase.h:797
HINSTANCE hInstance
Definition: charmap.c:20
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
EXTERN_C BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
Definition: zipfldr.cpp:50
#define S_FALSE
Definition: winerror.h:2357
HRESULT DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: atlbase.h:935
smooth NULL
Definition: ftsmooth.c:416
STDAPI DllCanUnloadNow()
Definition: zipfldr.cpp:65
const char * LPCSTR
Definition: xmlstorage.h:183
STDAPI DllRegisterServer()
Definition: zipfldr.cpp:77
HRESULT WINAPI UpdateRegistryFromResource(LPCTSTR lpszRes, BOOL bRegister, struct _ATL_REGMAP_ENTRY *pMapEntries=NULL)
Definition: atlbase.h:439
LONG HRESULT
Definition: typedefs.h:77
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:71
#define WINAPI
Definition: msvc.h:8
EXTERN_C const GUID CLSID_ZipFolderRightDragHandler
Definition: precomp.h:32
unsigned long DWORD
Definition: ntddk_ex.h:95
static void init_zlib()
Definition: zipfldr.cpp:44
static const WCHAR L[]
Definition: oid.c:1250
DEFINE_GUID(CLSID_ZipFolderStorageHandler, 0xe88dcce0, 0xb7b3, 0x11d1, 0xa9, 0xf0, 0x00, 0xaa, 0x00, 0x60, 0xfa, 0x31)
#define S_OK
Definition: intsafe.h:59
#define SW_SHOWNORMAL
Definition: winuser.h:764
CZipFldrModule gModule
Definition: zipfldr.cpp:36
EXTERN_C const GUID CLSID_ZipFolderDropHandler
Definition: precomp.h:33
HMODULE g_hModule
Definition: zipfldr.cpp:10
Definition: services.c:325
EXTERN_C BOOL WINAPI RouteTheCall(IN HWND hWndOwner, IN HINSTANCE hInstance, IN LPCSTR lpStringArg, IN INT Show)
Definition: zipfldr.cpp:109
zlib_filefunc64_def g_FFunc
Definition: zipfldr.cpp:42
EXTERN_C const GUID CLSID_ZipFolderSendTo
Definition: precomp.h:30
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
Definition: shlexec.cpp:2246
#define BEGIN_OBJECT_MAP(x)
Definition: atlcom.h:649
EXTERN_C const GUID CLSID_ZipFolderContextMenu
Definition: precomp.h:31
HRESULT DllUnregisterServer(BOOL bUnRegTypeLib=TRUE)
Definition: atlbase.h:945
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: zipfldr.cpp:72
#define EXTERN_C
Definition: basetyps.h:12
EXTERN_C const GUID CLSID_ZipFolderStorageHandler
Definition: precomp.h:29
#define END_OBJECT_MAP()
Definition: atlcom.h:651