Posts

CoMarshal ... Working in NT, Not in XP !!!

Problem:

I have created a multi-threaded application which works without any problems on a NT-4.0 Workstation/Server. When I try to run the same application in Windows XP, I get an error in a call to CoMarshalInterThreadInterfaceInStream which returns -2147418113.

I have provided a snippet of the code below where the call fails in Windows XP.

Environment: Windows-XP,SP-2,Visual Studio 6.0,SP-4,ATL-3.0

Should I be doing anything different in Windows XP?


HRESULT hr = S_OK;
IUnknown** pp = p->m_vec.begin();

while (pp m_vec.end() && hr == S_OK)
{
   if (*pp != NULL)
   {
         IEvent* pEvent = (IEvent*)*pp;
         IStream* pIStream;

         HRESULT hr = CoMarshalInterThreadInterfaceInStream(
            IID_IEvent,
            pEvent,
            &pIStream
         );

         if(SUCCEEDED(hr))
         {
            CComPtr pMarshalEvent;
            hr = CoGetInterfaceAndReleaseStream(
               pIStream,
               IID_IEvent,
               (void**)&pMarshalEvent
            );

            if(SUCCEEDED(hr))
            {
               hr = pMarshalEvent->NewCurrentCassette(m_pCurrentCassette, m_setBy);
            }
         }

      p++;
   }
}

Thread 2:

More ...

Consts in .NET !!!

I was doing some programming with C# and I had to use some consts as everybody does generally in programming. I had a class that simply had const string variables for my DB table names and stuff like that. My program was not working well and I started debugging and in the debugger, I was shocked to see that the const variables did not show the string values I had assigned. I did rebuilt and other non-sensical stuff like that until I learnt this about the consts in .NET:- const variables in .NET do not exist as variables out of the assembly they exist in. Instead, during compilation, they get embedded - hard-coded, where ever you use them, and so when you debug, you do not see the proper value that you had assigned. For debugging purposes you have to output diagnostic trace messages and verify. More ...

Joining the Game

Everything has a beginning.