Probleme bei der Erweiterung des MPSA (1 Viewer)

kuehnch

MP Donator
  • Premium Supporter
  • June 14, 2006
    303
    9
    43
    Cologne (Köln)
    Home Country
    Germany Germany
    Hallo,
    ich beschäftige mich derzeit mit einer kleinen Erweiterung des Mediaportal-Streamanalysers, welcher ja als Source im Filters-Ordner des Trunks zu finden ist. Ich habe hier ein wenig Code hinzugefügt und die Schnittstelle um zwei Methoden erweitert. Auf der Seite von MP habe ich ebenfalls das IEPGGrabber-Interface entsprechend angepasst.
    Nun fange ich mir beim Zugriff auf meine Funktionen immer eine Exception:

    02.07.2006 11:42:08 Exception :confused:ystem.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.

    Das Witzige ist, dass es eine Methode "GetEPGEventCount" gibt, welche exakt dieselbe Signatur wie meine Methode aufweist. Ich habe also mehr oder weniger Copy&Paste betrieben, jedoch kommt es schon garnicht erst zum funktionierenden Zugriff auf die Schnittstellenmethode in der MPSA.cpp (ein Debug-Log-Eintrag wird nicht erzeugt).

    Vergesse ich irgendwas Wesentliches, was COM angeht? Eine Registrierung oder ähnliches? Wer hat MPSA schonmal erweitert?

    Ich wollte mich an der PREMIERE-NVOD-Sache versuchen (SportPortal/Direkt-Optionskanäle) und habe halt den Streamanalyser so erweitert, dass er die Daten vorfiltert. Schaut bisher so aus im LOG:

    Code:
    02-07-2006 11:38:16 epg:   LinkageDescriptor 'Portal' (type: 0xb0 tsid: 0x3 onid: 0x85 sid: 0x11)
    02-07-2006 11:38:16 epg:   LinkageDescriptor 'Motorsport' (type: 0xb0 tsid: 0x3 onid: 0x85 sid: 0xde)
    02-07-2006 11:38:16 epg:   LinkageDescriptor 'Kompakt' (type: 0xb0 tsid: 0x11 onid: 0x85 sid: 0xdd)
    02-07-2006 11:38:16 epg:   LinkageDescriptor 'Kompakt 16:9' (type: 0xb0 tsid: 0x3 onid: 0x85 sid: 0xf0)
    02-07-2006 11:38:16 epg:   LinkageDescriptor 'News' (type: 0xb0 tsid: 0x1 onid: 0x85 sid: 0x309)

    Nun wollte ich diese Daten dann per GetSubChannelCount(..) und GetSubChannel(..) in MP weiterverarbeiten, was mir aber halt nicht gelingt. Hier mal eine der zwei Methoden:

    MPSA.h
    Code:
    IEPGGrabber
        STDMETHOD(GetSubChannelCount) (THIS_ ULONG channel, ULONG* subChannelCount)PURE;

    Code:
    CStreamAnalyser
    	STDMETHODIMP GetSubChannelCount( ULONG channel, ULONG* subChannelCount);

    MPSA.cpp
    Code:
    STDMETHODIMP CStreamAnalyzer::GetSubChannelCount( ULONG channel, ULONG* subChannelCount)
    {
    	try
    	{
    		Log("Called: CStreamAnalyzer::GetSubChannelCount");
    		*subChannelCount=m_pEPGPin->GetSubChannelCount(channel);
    	}
    	catch(...)
    	{
    		Dump("mpsaa: unhandled exception in GetSubChannelCount()");
    	}
    
    	return S_OK;
    }

    IEPGGrabber.cs
    Code:
    [PreserveSig]
    int GetSubChannelCount([In] uint channel, [Out] out uint subChannelCount);

    Zu der Log-Ausgabe "Called: CStreamAnalyzer::GetSubChannelCount" kommt es garnicht erst, woraus zu schließen ist, dass es schon bei COM irgendwo krachen muss.
     

    Users who are viewing this thread

    Top Bottom