#include "precomp.h" #include // for DllInstall prototype #include "advpub.h" #define GUID_STR_LEN 40 // global variables HINSTANCE hInstance; STDAPI DllUnregisterServer(void) { // This DLL does not need to unregister anything now. // So, we simply return success here. return NOERROR; } STDAPI DllRegisterServer(void) { // This DLL does not need to register anything now. // So, we simply return success here. return NOERROR; } EXTERN_C BOOL DllInitialize(IN PVOID hmod, IN ULONG ulReason, IN PCONTEXT pctx OPTIONAL) { UNREFERENCED_PARAMETER(pctx); if (ulReason == DLL_PROCESS_ATTACH) { hInstance = (HINSTANCE) hmod; DisableThreadLibraryCalls(hInstance); SHFusionInitializeFromModuleID(hInstance, 124); #ifdef DEBUG CcshellGetDebugFlags(); #endif } else if (ulReason == DLL_PROCESS_DETACH) { #ifdef DEBUG DeskCheckForLeaks(); #endif SHFusionUninitialize(); } return TRUE; } BOOL APIENTRY DllMain(IN HANDLE hDll, IN DWORD dwReason, IN LPVOID lpReserved) { ASSERT(0); return TRUE; } STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv) { // No Com object is registered by this DLL. So, let's fail! *ppv = NULL; return CLASS_E_CLASSNOTAVAILABLE;; } STDAPI DllCanUnloadNow(void) { return S_OK; }