65 lines
1.3 KiB
C++
65 lines
1.3 KiB
C++
|
#include "precomp.h"
|
||
|
#include <shlwapi.h> // 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;
|
||
|
}
|