示例#1
0
void CPlugin::RomClose()
{
	if (!m_RomOpen)
		return;

	WriteTraceF(PluginTraceType(),__FUNCTION__ "(%s): Before Rom Close",PluginType());
	RomClosed();
	m_RomOpen = false;
	WriteTraceF(PluginTraceType(),__FUNCTION__ "(%s): After Rom Close",PluginType());
}
示例#2
0
void CPlugin::Close()
{
    WriteTrace(PluginTraceType(), TraceDebug, "(%s): Start", PluginType());
    RomClose();
    if (m_Initialized)
    {
        CloseDLL();
        m_Initialized = false;
    }
    WriteTrace(PluginTraceType(), TraceDebug, "(%s): Done", PluginType());
}
示例#3
0
void CPlugin::Close()
{
	WriteTraceF(PluginTraceType(),__FUNCTION__ "(%s): Start",PluginType());
	RomClose();
	if (m_Initialized)
	{
		CloseDLL();
		m_Initialized = false;
	}
	WriteTraceF(PluginTraceType(),__FUNCTION__ "(%s): Done",PluginType());
}
示例#4
0
void CPlugin::RomOpened()
{
	if (m_RomOpen)
		return;

	if(RomOpen != NULL){
		WriteTraceF(PluginTraceType(),__FUNCTION__ "(%s): Before Rom Open",PluginType());
		RomOpen();
		WriteTraceF(PluginTraceType(),__FUNCTION__ "(%s): After Rom Open",PluginType());
	}
	m_RomOpen = true;
}
示例#5
0
void CPlugin::UnloadPlugin()
{
    WriteTrace(PluginTraceType(), TraceDebug, "(%s): unloading", PluginType());
    memset(&m_PluginInfo, 0, sizeof(m_PluginInfo));
    if (m_LibHandle != NULL)
    {
        UnloadPluginDetails();
        pjutil::DynLibClose(m_LibHandle);
        m_LibHandle = NULL;
    }

    DllAbout = NULL;
    CloseDLL = NULL;
    RomOpen = NULL;
    RomClosed = NULL;
    PluginOpened = NULL;
    DllConfig = NULL;
    SetSettingInfo = NULL;
    SetSettingInfo2 = NULL;
    SetSettingInfo3 = NULL;
}
示例#6
0
void CPlugin::UnloadPlugin()
{
    WriteTrace(PluginTraceType(), TraceDebug, "(%s): unloading", PluginType());
    memset(&m_PluginInfo, 0, sizeof(m_PluginInfo));
    if (m_hDll != NULL)
    {
        UnloadPluginDetails();
        FreeLibrary((HMODULE)m_hDll);
        m_hDll = NULL;
    }

    DllAbout = NULL;
    CloseDLL = NULL;
    RomOpen = NULL;
    RomClosed = NULL;
    PluginOpened = NULL;
    DllConfig = NULL;
    SetSettingInfo = NULL;
    SetSettingInfo2 = NULL;
    SetSettingInfo3 = NULL;
}
// ---------------------------------------------------------------------------
// Resolve view plugin based on the criteria passed in parameter.
// ---------------------------------------------------------------------------
//
CMPXViewPlugin* CMPXViewPluginHandler::ResolvePluginL(
    const RArray<TUid>& aUids, TUid& aResolvedPluginType,
    TUid& aResolvedPluginImplementationUid )
    {
    MPX_FUNC( "CMPXViewPluginHandler::ResolvePluginL uid array" );
#ifdef _DEBUG
    for ( TInt i = 0; i < aUids.Count(); i++ )
        {
        MPX_DEBUG2( "CMPXViewPluginHandler::ResolvePluginL input Uid = 0x%x", aUids[i].iUid );
        }
#endif // _DEBUG
    TUid impUid( FindPlugin( aUids.Array() ) );
    MPX_DEBUG2( "CMPXViewPluginHandler::ResolvePluginL resolved implementation Uid = 0x%x", impUid.iUid );
    if ( impUid == KNullUid )
        {
        User::Leave( KErrNotFound );
        }
    else
        {
        aResolvedPluginImplementationUid = impUid;
        aResolvedPluginType = PluginType( impUid );
        }
    return PluginL( impUid );
    }
示例#8
0
bool CPlugin::Load (const char * FileName)
{
	// Already loaded, so unload first.
	if (m_hDll != NULL)
	{
		UnloadPlugin();
	}

	// Try to load the plugin DLL
	//Try to load the DLL library
	if (bHaveDebugger())
	{
		m_hDll = LoadLibrary(FileName);
	}
	else
	{
		UINT LastErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS);
		m_hDll = LoadLibrary(FileName);
		SetErrorMode(LastErrorMode);
	}

	if (m_hDll == NULL) 
	{ 
		return false;
	}

	// Get DLL information
	void(__cdecl *GetDllInfo) (PLUGIN_INFO * PluginInfo);
	LoadFunction(GetDllInfo);
	if (GetDllInfo == NULL) { return false; }

	GetDllInfo(&m_PluginInfo);
	if (!CPluginList::ValidPluginVersion(m_PluginInfo)) { return false; }
	if (m_PluginInfo.Type != type()) { return false; }

	CloseDLL       = (void (__cdecl *)(void)) GetProcAddress( (HMODULE)m_hDll, "CloseDLL" );
	RomOpen        = (void (__cdecl *)(void)) GetProcAddress( (HMODULE)m_hDll, "RomOpen" );
	RomClosed      = (void (__cdecl *)(void)) GetProcAddress( (HMODULE)m_hDll, "RomClosed" );
	PluginOpened   = (void (__cdecl *)(void)) GetProcAddress( (HMODULE)m_hDll, "PluginLoaded" );
	DllConfig      = (void (__cdecl *)(DWORD)) GetProcAddress( (HMODULE)m_hDll, "DllConfig" );
	DllAbout       = (void (__cdecl *)(HWND)) GetProcAddress( (HMODULE)m_hDll, "DllAbout" );

	SetSettingInfo3 = (void (__cdecl *)(PLUGIN_SETTINGS3 *))GetProcAddress( (HMODULE)m_hDll, "SetSettingInfo3" );
	if (SetSettingInfo3)
	{
		PLUGIN_SETTINGS3 info;
		info.FlushSettings = (void (*)( void * handle))CSettings::FlushSettings;
		SetSettingInfo3(&info);
	}

	SetSettingInfo2 = (void (__cdecl *)(PLUGIN_SETTINGS2 *))GetProcAddress( (HMODULE)m_hDll, "SetSettingInfo2" );
	if (SetSettingInfo2)
	{
		PLUGIN_SETTINGS2 info;
		info.FindSystemSettingId = (unsigned int (*)( void * handle, const char * ))CSettings::FindSetting;
		SetSettingInfo2(&info);
	}

	SetSettingInfo   = (void (__cdecl *)(PLUGIN_SETTINGS *))GetProcAddress( (HMODULE)m_hDll, "SetSettingInfo" );
	if (SetSettingInfo)
	{
		PLUGIN_SETTINGS info;
		info.dwSize = sizeof(PLUGIN_SETTINGS);
		info.DefaultStartRange = GetDefaultSettingStartRange();
		info.SettingStartRange = GetSettingStartRange();
		info.MaximumSettings = MaxPluginSetting;
		info.NoDefault = Default_None;
		info.DefaultLocation = g_Settings->LoadDword(Setting_UseFromRegistry) ? SettingType_Registry : SettingType_CfgFile;
		info.handle = g_Settings;
		info.RegisterSetting = (void(*)(void *, int, int, SettingDataType, SettingType, const char *, const char *, DWORD))&CSettings::RegisterSetting;
		info.GetSetting = (unsigned int(*)(void *, int))&CSettings::GetSetting;
		info.GetSettingSz = (const char * (*)(void *, int, char *, int))&CSettings::GetSettingSz;
		info.SetSetting = (void(*)(void *, int, unsigned int))&CSettings::SetSetting;
		info.SetSettingSz = (void(*)(void *, int, const char *))&CSettings::SetSettingSz;
		info.UseUnregisteredSetting = NULL;

		SetSettingInfo(&info);
	}

	if (RomClosed == NULL)
		return false;

	if (!LoadFunctions())
	{
		return false;
	}
	WriteTraceF(PluginTraceType(),__FUNCTION__ "(%s): Functions loaded",PluginType());

	if (PluginOpened)
	{
		WriteTraceF(PluginTraceType(),__FUNCTION__ "(%s): Before Plugin Opened",PluginType());
		PluginOpened();
		WriteTraceF(PluginTraceType(),__FUNCTION__ "(%s): After Plugin Opened",PluginType());
	}
	return true;
}