RPC - STUB Feigabe



  • Hallo,

    Mal wieder eine Frage zu RPCs ( auch wenn das für 90% des Forums eher uninteressanz ist 🙂 ).
    Ich habe eine Funktion, die mittels IDL wie folgt definiert ist :

    void ShowFrame( [in] handle_t h1, [in] unsigned long PrimeServerHandle, [in] int iAnzBytes, [, size_is(iAnzBytes)] unsigned char* pShowBytes );
    

    Diese bekommt in pShowBytes Bilddaten übergeben, die dann an eine List angehängt werden. Ein Visualisierungsthread läuft parallel und stellt diese Daten dar und giebt sie mittels delete[] wieder frei. Da pShowBytes aber von RPC verwaltet werden, werden diese nach aufruf der RPC - Funktion sofort freigegeben. Daher bin ich gezwungen die RPC Funktion zum einsammeln der BYTES wie folgt zu implementieren:

    void ShowFrame( handle_t h1, unsigned long PrimeServerHandle, int iAnzBytes, unsigned char* pShowBytes )
    {
        int iFrameSize = m_MainInterface.m_ImgShowClass.GetFrameSize();// == iAnzBytes
        BYTE* pDestBytes = new BYTE[iFrameSize];
        memcpy( pDestBytes, pShowBytes, iFrameSize );//eigentlich unsinnige Copy
        m_MainInterface.m_ImgByteList.AddImgBytes( pDestBytes );    
    }
    

    Kann ich dieses Verhalten korrigieren und den STUB "überreden", die Freigabe mir zu überlassen?

    @King : Sorry, aber das hat DAS Buch mir nicht gesagt.



  • Du kannst Dir ja Deinen eigenen Stub schreiben, wenn Dich die 1ms stört, die die Allozierung und das memcpy dauert.



  • Uhhaa, dann nehme ich mal lieber davon Abstand. Ich dachte nur, es giebt da auch irgend so ein schönes kleines IDL Kürzel, womit ich das einfach festlegen kann ala [in, RPC_DO_NOT_DELETE].
    Ich habe ja schon mal versucht, in dem von der IDL generierten File herumzustöbern. Dort stößt man dann ganz schnell auf diese Ndr* - Befehle, zu denen die Infos ziemlich dünn gesäht sind.
    Die 1ms sind nicht das Problem, aber wenn diese Funktion häufiger aufgerufen wird (und das wird sie), ist das trotzdem Zeit, die ich ganz gern einsparen würde.

    Trotzdem Danke für die schnelle Antwort - bin fürs Erste kuriert



  • Hallo TheBigW.

    Hast du irgendwelche Informationen zur RPC-Progrmmierung.
    Was richtig brauchbares hab ich noch nciht gefunden.

    Eine Art Tutorial wäre nicht schlecht.

    Danke im voraus



  • Ich würde dazu das Buch "Inside Distributed COM" von Guy und Henry Eddon empfehlen. Da ist ein sehr schönes Quellcodebeispiel dabei von einem RPC Client-Server zur Primzahlenberechnung.


Anmelden zum Antworten