// MMComp.cpp : Implementation of DLL Exports.


#include "windows.h"
#include "netres.h"
#include "tchar.h"
#include "getinfo.h"
#include "cdnet.h"

HINSTANCE g_dllInst = NULL;
HINSTANCE g_hURLMon = NULL;
CRITICAL_SECTION g_Critical;
CRITICAL_SECTION g_BatchCrit;

extern "C"
HRESULT WINAPI CDNET_CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, void ** ppvObj)
{
    CCDNet* pObj;
    HRESULT hr = E_OUTOFMEMORY;

    *ppvObj = NULL;

    if (NULL!=pUnkOuter && IID_IUnknown!=riid)
    {
        return CLASS_E_NOAGGREGATION;
    }

    pObj = new CCDNet();

    if (NULL==pObj)
    {
        return hr;
    }

    hr = pObj->QueryInterface(riid, ppvObj);

    if (FAILED(hr))
    {
        delete pObj;
    }

    return hr;
}


extern "C"
void WINAPI CDNET_Init(HINSTANCE hInst)
{
    g_dllInst = hInst;
    InitializeCriticalSection(&g_Critical);
    InitializeCriticalSection(&g_BatchCrit);
}

extern "C"
void WINAPI CDNET_Uninit()
{
    if (g_hURLMon)
    {
        FreeLibrary(g_hURLMon);
    }
    DeleteCriticalSection(&g_Critical);
    DeleteCriticalSection(&g_BatchCrit);
}