コード例 #1
0
ファイル: c++-test.cpp プロジェクト: chrisforbes/corfu
STDAPI DllGetClassObject( IID const & rclsid, IID const & riid, void ** ppv )
{
	static ClassFactory<Profiler> classFactory;

	return (CLSID_PROFILER == rclsid) ? 
		classFactory.QueryInterface( riid, ppv ) : E_OUTOFMEMORY;
}
コード例 #2
0
STDAPI DllGetClassObject(REFCLSID clsid, REFIID riid, void** ppv)
{
    ClassFactory *pFactory = NULL;

    HRESULT hr = CLASS_E_CLASSNOTAVAILABLE; // Default to failure

    // Find an entry in our look-up table for the specified CLSID.
    for (DWORD index = 0; index < g_numClassFactories; index++)
    {
        if (*g_ClassFactories[index].pclsid == clsid)
        {
            // Found an entry. Create a new class factory object.
            pFactory = new ClassFactory(g_ClassFactories[index].pfnCreate);
            if (pFactory)
            {
                hr = S_OK;
            }
            else
            {
                hr = E_OUTOFMEMORY;
            }
            break;
        }
    }

    if (SUCCEEDED(hr))
    {
        hr = pFactory->QueryInterface(riid, ppv);
    }
    SAFE_RELEASE(pFactory);

    return hr;
}
コード例 #3
0
ファイル: factory.c プロジェクト: aragaer/wine
static HRESULT WINAPI ClassFactory_CreateInstance(
    IClassFactory *iface,
    IUnknown *pOuter,
    REFIID riid,
    void **ppobj )
{
    ClassFactory *This = ClassFactory_from_IClassFactory(iface);
    IUnknown *punk;
    HRESULT r;

    TRACE("%p %s %p\n", pOuter, debugstr_guid(riid), ppobj );

    *ppobj = NULL;

    if (pOuter)
        return CLASS_E_NOAGGREGATION;

    r = This->pCreateInstance( pOuter, (void**) &punk );
    if (FAILED(r))
        return r;

    r = IUnknown_QueryInterface( punk, riid, ppobj );
    IUnknown_Release( punk );
    return r;
}
コード例 #4
0
ファイル: DllMain.cpp プロジェクト: tapetums/CubeMelon
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void** ppvObject)
{
    if ( nullptr == ppvObject )
    {
        return E_INVALIDARG;
    }

    *ppvObject = nullptr;

    if ( !IsEqualCLSID(rclsid, CubeMelon::CLSID_Component) )
    {
        return CLASS_E_CLASSNOTAVAILABLE;
    }

    if ( IsEqualIID(riid, IID_IClassFactory) )
    {
        static ClassFactory factory;

        return factory.QueryInterface(riid, ppvObject);
    }
    else
    {
        return E_NOINTERFACE;
    }
}
コード例 #5
0
ファイル: TinySmiley.cpp プロジェクト: 91yuan/TinyUI
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
{
	if (IsEqualCLSID(rclsid, CLSID_Smiley))
	{
		ClassFactory<TinySmiley> *cf = new ClassFactory<TinySmiley>();
		return cf->QueryInterface(riid, ppv);
	}
	*ppv = NULL;
	return CLASS_E_CLASSNOTAVAILABLE;;
}
コード例 #6
0
ファイル: browseui_main.c プロジェクト: devyn/wine
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *punkOuter, REFIID iid, LPVOID *ppvOut)
{
    ClassFactory *This = (ClassFactory *)iface;
    HRESULT ret;
    IUnknown *obj;

    TRACE("(%p, %p, %s, %p)\n", iface, punkOuter, debugstr_guid(iid), ppvOut);
    ret = This->ctor(punkOuter, &obj);
    if (FAILED(ret))
        return ret;
    ret = IUnknown_QueryInterface(obj, iid, ppvOut);
    IUnknown_Release(obj);
    return ret;
}
コード例 #7
0
ファイル: DllMain.cpp プロジェクト: Noiled/equalizerapo
STDAPI DllGetClassObject(const CLSID& clsid, const IID& iid, void** ppv)
{
	if (clsid != EQUALIZERAPO_POST_MIX_GUID && clsid != EQUALIZERAPO_PRE_MIX_GUID)
		return CLASS_E_CLASSNOTAVAILABLE;

	ClassFactory* factory = new ClassFactory();
	if (factory == NULL)
		return E_OUTOFMEMORY;

	HRESULT hr = factory->QueryInterface(iid, ppv);
	factory->Release();

	return hr;
}
コード例 #8
0
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppReturn)
{    
    *ppReturn = 0;
    if (!IsEqualCLSID(SHELLEXT_GUID, rclsid))
        return CLASS_E_CLASSNOTAVAILABLE;

    ClassFactory *fac = new ClassFactory();
    if (fac == 0)
        return E_OUTOFMEMORY;

    HRESULT result = fac->QueryInterface(riid, ppReturn);
    fac->Release();
    return result;
}
コード例 #9
0
ファイル: CatchCopy.cpp プロジェクト: blizzard4591/Catchcopy
// Returns a class factory to create an object of the requested type
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
	HRESULT hr = CLASS_E_CLASSNOTAVAILABLE;
    if (IsEqualCLSID(CLSID_DDShellExt, rclsid))
    {
         hr = E_OUTOFMEMORY;
        ClassFactory *pClassFactory = new ClassFactory();
        if (pClassFactory)
        {
            hr = pClassFactory->QueryInterface(riid, ppv);
            pClassFactory->Release();
        }
    }
    return hr;
}
コード例 #10
0
ファイル: urlmon_main.c プロジェクト: Sunmonds/wine
static HRESULT WINAPI CF_CreateInstance(IClassFactory *iface, IUnknown *pOuter,
                                        REFIID riid, LPVOID *ppobj)
{
    ClassFactory *This = impl_from_IClassFactory(iface);
    HRESULT hres;
    LPUNKNOWN punk;
    
    TRACE("(%p)->(%p,%s,%p)\n",This,pOuter,debugstr_guid(riid),ppobj);

    *ppobj = NULL;
    if(SUCCEEDED(hres = This->pfnCreateInstance(pOuter, (LPVOID *) &punk))) {
        hres = IUnknown_QueryInterface(punk, riid, ppobj);
        IUnknown_Release(punk);
    }
    return hres;
}
コード例 #11
0
HRESULT __stdcall DllGetClassObject( REFCLSID objGuid, REFIID riid, void **ppv ){
	*ppv = NULL;
	
	if( IsEqualCLSID( objGuid, CLSID_OraHandler ) ){
		ClassFactory *factory = new (std::nothrow) ClassFactory();
		if( !factory )
			return E_OUTOFMEMORY;

		factory->AddRef();
		HRESULT hr = factory->QueryInterface( riid, ppv );
		factory->Release();
		return hr;
	}
	else
		return CLASS_E_CLASSNOTAVAILABLE;
}
コード例 #12
0
ファイル: main.c プロジェクト: RareHare/reactos
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface,
        IUnknown *pOuter, REFIID riid, void **ppv)
{
    ClassFactory *This = impl_from_IClassFactory(iface);
    HRESULT ret;
    IUnknown *obj;
    TRACE("(%p, %p, %s, %p)\n", iface, pOuter, debugstr_guid(riid), ppv);

    ret = This->cf(pOuter, &obj);
    if (FAILED(ret))
        return ret;

    ret = IUnknown_QueryInterface(obj,riid,ppv);
    IUnknown_Release(obj);
    return ret;
}
コード例 #13
0
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
{
	using namespace kritashellex;

	ClassFactory::Type type;
	if (IsEqualCLSID(CLSID_KritaThumbnailProvider, rclsid)) {
		type = ClassFactory::CLASS_THUMBNAIL;
	} else if (IsEqualCLSID(CLSID_KritaPropertyHandler, rclsid)) {
		type = ClassFactory::CLASS_PROPERTY;
	} else {
		return CLASS_E_CLASSNOTAVAILABLE;
	}

	ClassFactory *pClassFactory = new (std::nothrow) kritashellex::ClassFactory(type);
	if (!pClassFactory) {
		return E_OUTOFMEMORY;
	}

	HRESULT hr = pClassFactory->QueryInterface(riid, ppv);
	pClassFactory->Release();
	return hr;
}
コード例 #14
0
ファイル: main.c プロジェクト: WASSUM/longene_travel
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface,
        IUnknown *pOuter, REFIID riid, void **ppv)
{
    ClassFactory *This = (ClassFactory*)iface;
    return This->cf(pOuter, riid, ppv);
}
コード例 #15
0
ファイル: main.c プロジェクト: MichaelMcDonnell/wine
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter,
        REFIID riid, void **ppvObject)
{
    ClassFactory *This = impl_from_IClassFactory(iface);
    return This->fnCreateInstance(pUnkOuter, riid, ppvObject);
}