// DLLMAIN: Entry points for COM object dll


#include "precomp.h"
#include "optres.h"
#include "tchar.h"
#include "cdoptimp.h"
#include "cddata.h"


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

    *ppvObj = NULL;

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

    if (IID_ICDData == riid)
    {
        pObj = (LPUNKNOWN) new CCDData();
    }
    else if (IID_ICDOpt == riid)
    {
        pObj = (LPUNKNOWN) new CCDOpt();
    }

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

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

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

    return hr;
}