예제 #1
0
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
	#ifndef NO_EXPIRATION_DATE

	// check if we are outdated
	// delete this for an official release
	SYSTEMTIME SystemTime;
	GetSystemTime(&SystemTime);
	if ((SystemTime.wYear * 500 + SystemTime.wMonth * 35 + SystemTime.wDay) >
		(EXP_YEAR         * 500 + EXP_MONTH         * 35 + EXP_DAY)) {
		char szTitle[256];
		LoadString(_Module.m_hInst, IDS_EXPIREDTITLE, szTitle, sizeof szTitle);
		char szText[256];
		LoadString(_Module.m_hInst, IDS_EXPIRED, szText, sizeof szText);
		MessageBox(0, szText, szTitle, MB_ICONINFORMATION|MB_OK);
		return CLASS_E_CLASSNOTAVAILABLE;
	}

	#endif

/*
	if ( !IsSingleThreadedApartment() ) {
		MessageBox(0, "Wrong threading model, please reinstall VPinMAME!", "Unable to run", MB_ICONINFORMATION|MB_OK);
		return CLASS_E_CLASSNOTAVAILABLE;
	}
*/

#ifdef _MERGE_PROXYSTUB
    if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK)
        return S_OK;
#endif
    return _Module.GetClassObject(rclsid, riid, ppv);
}
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
#ifdef _MERGE_PROXYSTUB
    if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK)
        return S_OK;
#endif
    return _Module.GetClassObject(rclsid, riid, ppv);
}
예제 #3
0
// Returns a class factory to create an object of the requested type.
STDAPI DllGetClassObject(_In_ REFCLSID rclsid, _In_ REFIID riid, _Outptr_ LPVOID* ppv)
{
#ifdef _MERGE_PROXYSTUB
    if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK)
        return S_OK;
#endif
    return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
}
예제 #4
0
/*----------------------------------------------------------------------------------------------
	Retrieves the class factory for the given class ID. This function is required by COM and
		must be exported from the DLL.
----------------------------------------------------------------------------------------------*/
STDAPI DLLEXPORT__ DllGetClassObject(REFCLSID clsid, REFIID iid, VOID ** ppv)
{
	ENTER_DLL();
#ifdef _MERGE_PROXYSTUB
	if (PrxDllGetClassObject(clsid, iid, ppv) == S_OK)
		return S_OK;
#endif
	ModuleEntry::ModuleAddRef();
	HRESULT hr = ModuleEntry::ModuleGetClassObject(clsid, iid, ppv);
	ModuleEntry::ModuleRelease();
	return hr;
}
예제 #5
0
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
    // Initialize the application, if needed
    g_papp->Initialize(ZString());

#ifdef _MERGE_PROXYSTUB
    if (S_OK == PrxDllGetClassObject(rclsid, riid, ppv))
        return S_OK;
#endif

    return _Module.GetClassObject(rclsid, riid, ppv);
}
예제 #6
0
// 返回一个类工厂以创建所请求类型的对象。
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
	if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK)
		return S_OK;
	return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
}