dll_main.cpp
1 #include "pch.h" 2 3 #include "shell_context_menu_win10.h" 4 #include "dll_main.h" 5 #include "trace.h" 6 7 #include <common/Telemetry/EtwTrace/EtwTrace.h> 8 9 HMODULE module_instance_handle = 0; 10 Shared::Trace::ETWTrace trace(L"NewPlusShellExtension_Win10"); 11 12 BOOL APIENTRY DllMain(HMODULE module_handle, DWORD ul_reason_for_call, LPVOID reserved) 13 { 14 switch (ul_reason_for_call) 15 { 16 case DLL_PROCESS_ATTACH: 17 module_instance_handle = module_handle; 18 Trace::RegisterProvider(); 19 newplus::utilities::init_logger(); 20 break; 21 22 case DLL_PROCESS_DETACH: 23 Trace::UnregisterProvider(); 24 break; 25 } 26 return TRUE; 27 } 28 29 STDAPI DllGetActivationFactory(_In_ HSTRING activatableClassId, _COM_Outptr_ IActivationFactory** factory) 30 { 31 return Module<ModuleType::InProc>::GetModule().GetActivationFactory(activatableClassId, factory); 32 } 33 34 STDAPI DllCanUnloadNow() 35 { 36 return Module<InProc>::GetModule().GetObjectCount() == 0 ? S_OK : S_FALSE; 37 } 38 39 STDAPI DllGetClassObject(_In_ REFCLSID ref_class_id, _In_ REFIID ref_interface_id, _Outptr_ LPVOID FAR* object) 40 { 41 return Module<InProc>::GetModule().GetClassObject(ref_class_id, ref_interface_id, object); 42 } 43 44 CoCreatableClass(shell_context_menu_win10)