IRunningObjectTable::GetObject return a errorHi, <br>    When I use RunningObjectTable, there is a puzzling error. Why I can't get a right pointer by IRunningObjectTable::GetObject.<br><br>    Here is the test code:<br><br> <p>int main(int argc, char* argv[])<br>{<br>    CoInitialize(NULL);</p> <p>    {<br>        CComPtr&lt;IHello&gt; ptr;<br>        ptr.CoCreateInstance(CLSID_Hello);</p> <p>        ptr-&gt;Hello();    // I can InternalAddRef() in this function.<br>    }                         // So, when ptr is auto released, the object in COM server end will not be desstructed.</p> <p>    {<br>        HRESULT hr = S_OK;<br>        IRunningObjectTable* pROT = NULL;<br>        <br>        const WCHAR szDelim[2] = L&quot;!&quot;;<br>        IMoniker*   pmkService = NULL;<br>        <br>        CComBSTR    bstrMkItemName(&quot;12345678&quot;); <br>        <br>        hr = CreateItemMoniker( szDelim, bstrMkItemName, &amp;pmkService );<br>        if( FAILED( hr ) )<br>        {<br>            return hr;<br>        }<br>        <br>        <br>        hr = GetRunningObjectTable( 0, &amp;pROT );<br>        if( FAILED( hr ) )<br>        {<br>            return hr;<br>        }<br>        <br>        <br>        IUnknown* pUnk;<br>        pROT-&gt;GetObject(pmkService, &amp;pUnk);          // after this line, why pUnk = NULL?</p> <p>        IHello* iptr;<br>        pUnk-&gt;QueryInterface(&amp;iptr);</p> <p>        iptr-&gt;Hello();<br>    }</p> <p> return 0;<br>}    <br><br>The code in COM server end:<br></p> <p>STDMETHODIMP CHello::Hello()<br>{<br>    MessageBox(NULL, &quot;Hello&quot;, &quot;&quot;, MB_OK);</p> <p>    HRESULT hr = S_OK;<br>    IRunningObjectTable* pROT = NULL;</p> <p>    const WCHAR szDelim[2] = L&quot;!&quot;;<br> IMoniker*   pmkService = NULL;</p> <p>    CComBSTR    bstrMkItemName(&quot;12345678&quot;); </p> <p> hr = CreateItemMoniker( szDelim, bstrMkItemName, &amp;pmkService );<br>    if( FAILED( hr ) )<br> {<br>        return hr;<br> }</p> <p><br> hr = GetRunningObjectTable( 0, &amp;pROT );<br> if( FAILED( hr ) )<br> {<br>        return hr;<br> }</p> <p> hr = pROT-&gt;Register(0, this, pmkService, &amp;m_dwRegister);</p> <p>    this-&gt;InternalAddRef();<br> return S_OK;<br>}</p> <p><br><br> </p>thanks.<br>liixixi© 2009 Microsoft Corporation. All rights reserved.Fri, 11 Jul 2008 02:45:42 Z34361bc9-12d1-48b2-a4b0-95ad65b8be2chttp://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/34361bc9-12d1-48b2-a4b0-95ad65b8be2c#34361bc9-12d1-48b2-a4b0-95ad65b8be2chttp://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/34361bc9-12d1-48b2-a4b0-95ad65b8be2c#34361bc9-12d1-48b2-a4b0-95ad65b8be2cliixixihttp://social.msdn.microsoft.com/Profile/en-US/?user=liixixiIRunningObjectTable::GetObject return a errorHi, <br>    When I use RunningObjectTable, there is a puzzling error. Why I can't get a right pointer by IRunningObjectTable::GetObject.<br><br>    Here is the test code:<br><br> <p>int main(int argc, char* argv[])<br>{<br>    CoInitialize(NULL);</p> <p>    {<br>        CComPtr&lt;IHello&gt; ptr;<br>        ptr.CoCreateInstance(CLSID_Hello);</p> <p>        ptr-&gt;Hello();    // I can InternalAddRef() in this function.<br>    }                         // So, when ptr is auto released, the object in COM server end will not be desstructed.</p> <p>    {<br>        HRESULT hr = S_OK;<br>        IRunningObjectTable* pROT = NULL;<br>        <br>        const WCHAR szDelim[2] = L&quot;!&quot;;<br>        IMoniker*   pmkService = NULL;<br>        <br>        CComBSTR    bstrMkItemName(&quot;12345678&quot;); <br>        <br>        hr = CreateItemMoniker( szDelim, bstrMkItemName, &amp;pmkService );<br>        if( FAILED( hr ) )<br>        {<br>            return hr;<br>        }<br>        <br>        <br>        hr = GetRunningObjectTable( 0, &amp;pROT );<br>        if( FAILED( hr ) )<br>        {<br>            return hr;<br>        }<br>        <br>        <br>        IUnknown* pUnk;<br>        pROT-&gt;GetObject(pmkService, &amp;pUnk);          // after this line, why pUnk = NULL?</p> <p>        IHello* iptr;<br>        pUnk-&gt;QueryInterface(&amp;iptr);</p> <p>        iptr-&gt;Hello();<br>    }</p> <p> return 0;<br>}    <br><br>The code in COM server end:<br></p> <p>STDMETHODIMP CHello::Hello()<br>{<br>    MessageBox(NULL, &quot;Hello&quot;, &quot;&quot;, MB_OK);</p> <p>    HRESULT hr = S_OK;<br>    IRunningObjectTable* pROT = NULL;</p> <p>    const WCHAR szDelim[2] = L&quot;!&quot;;<br> IMoniker*   pmkService = NULL;</p> <p>    CComBSTR    bstrMkItemName(&quot;12345678&quot;); </p> <p> hr = CreateItemMoniker( szDelim, bstrMkItemName, &amp;pmkService );<br>    if( FAILED( hr ) )<br> {<br>        return hr;<br> }</p> <p><br> hr = GetRunningObjectTable( 0, &amp;pROT );<br> if( FAILED( hr ) )<br> {<br>        return hr;<br> }</p> <p> hr = pROT-&gt;Register(0, this, pmkService, &amp;m_dwRegister);</p> <p>    this-&gt;InternalAddRef();<br> return S_OK;<br>}</p> <p><br><br> </p>thanks.<br>liixixiMon, 07 Jul 2008 04:09:19 Z2008-07-07T04:09:19Zhttp://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/34361bc9-12d1-48b2-a4b0-95ad65b8be2c#6d94a130-9026-4c4b-bb1c-3e3ceaaeb007http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/34361bc9-12d1-48b2-a4b0-95ad65b8be2c#6d94a130-9026-4c4b-bb1c-3e3ceaaeb007Brian Muthhttp://social.msdn.microsoft.com/Profile/en-US/?user=Brian%20MuthIRunningObjectTable::GetObject return a error What is the value of HRESULT returned by GetObject()?<br><br>Is the COM Server a DLL, a DCOM executable or a DCOM service?Mon, 07 Jul 2008 18:13:10 Z2008-07-07T18:13:10Zhttp://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/34361bc9-12d1-48b2-a4b0-95ad65b8be2c#1386f8e7-d967-4dd9-900f-13288908eb2ehttp://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/34361bc9-12d1-48b2-a4b0-95ad65b8be2c#1386f8e7-d967-4dd9-900f-13288908eb2eliixixihttp://social.msdn.microsoft.com/Profile/en-US/?user=liixixiIRunningObjectTable::GetObject return a error The problem has reseloved, it should use ROTFLAGS_REGISTRATIONKEEPSALIVE to register the object to ROT.<br>Tue, 08 Jul 2008 03:15:40 Z2008-07-08T03:15:40Zhttp://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/34361bc9-12d1-48b2-a4b0-95ad65b8be2c#1eb73e34-113d-4091-9a3e-c7cd33954f71http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/34361bc9-12d1-48b2-a4b0-95ad65b8be2c#1eb73e34-113d-4091-9a3e-c7cd33954f71Brian Muthhttp://social.msdn.microsoft.com/Profile/en-US/?user=Brian%20MuthIRunningObjectTable::GetObject return a error Out of curiosity, did the HRESULT value returned by GetObject() help you deduce the problem?Tue, 08 Jul 2008 05:06:22 Z2008-07-08T05:06:22Z