111 lines
2.3 KiB
C++
111 lines
2.3 KiB
C++
//
|
|
// Copyright (c) 2001 Microsoft Corporation
|
|
//
|
|
//
|
|
|
|
#include "afilter.h"
|
|
|
|
HINSTANCE g_DllInstance = NULL;
|
|
LONG g_cRef=0;
|
|
|
|
//----------------------------------------------------------------------------
|
|
BOOL WINAPI DllMain( HINSTANCE hInst, DWORD dwReason, LPVOID pvReserved )
|
|
{
|
|
HRESULT hr = S_OK;
|
|
BOOL ret = TRUE;
|
|
|
|
switch (dwReason)
|
|
{
|
|
case DLL_PROCESS_ATTACH:
|
|
// remember the instance
|
|
g_DllInstance = hInst;
|
|
DisableThreadLibraryCalls(hInst);
|
|
break;
|
|
|
|
case DLL_PROCESS_DETACH:
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
//exit:
|
|
return ret;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
STDAPI DllRegisterServer(void)
|
|
{
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
STDAPI DllUnregisterServer(void)
|
|
{
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// DllAddRef
|
|
// ----------------------------------------------------------------------------
|
|
ULONG DllAddRef(void)
|
|
{
|
|
return (ULONG)InterlockedIncrement(&g_cRef);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// DllRelease
|
|
// ----------------------------------------------------------------------------
|
|
ULONG DllRelease(void)
|
|
{
|
|
return (ULONG)InterlockedDecrement(&g_cRef);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
STDAPI
|
|
DllCanUnloadNow()
|
|
{
|
|
return g_cRef > 0 ? S_FALSE : S_OK;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
HRESULT
|
|
GetAppMimeFilterClassObject(REFIID iid, void** ppv)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
|
|
hr = E_OUTOFMEMORY;
|
|
CAppMimeFilterClassFactory *pAppMimeFilterClassFactory = new CAppMimeFilterClassFactory();//rclsid);
|
|
if (pAppMimeFilterClassFactory != NULL)
|
|
{
|
|
hr = pAppMimeFilterClassFactory->QueryInterface(iid, ppv);
|
|
pAppMimeFilterClassFactory->Release();
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
STDAPI
|
|
DllGetClassObject(REFCLSID clsid, REFIID iid, LPVOID *ppv)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
|
|
if (clsid == CLSID_AppMimeFilter)
|
|
{
|
|
hr = GetAppMimeFilterClassObject(iid, ppv);
|
|
}
|
|
else
|
|
{
|
|
hr = CLASS_E_CLASSNOTAVAILABLE;
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|