|
|
|
date: Wed, 25 Jan 2006 07:58:46 -0500,
group: microsoft.public.platformsdk.com_ole
back
Re: E_OUTOFMEMORY on GetIdsOfNames/Invoke
Hi Kim,
This is the exact code:
DISPID dispid;
LPOLESTR lpsz = L"CreateApplication";
//CComDispatchDriver m_Controller;
hr = m_Controller->GetIDsOfNames( IID_NULL, &lpsz, 1,
LOCALE_USER_DEFAULT, &dispid );
This is exact code. So, hr is E_OUTOFMEMORY. Then I tried to call Invoke()
with hardcoded values and same HRESULT.
BTW, I installed SP1 on that VPC and still same problem. Then I installed
SP3 and SP4 and no error happens anymore. No error on WinXP. The pointer is
called through on a correctly COM (OleInitialize) initialized thread and the
pointer is retrieved through GIT from another COM (MTA) initialized thread.
It even works on NT4 SP6 (VPC machine). It's always reproducible on that
win2k-KO VPC machine. I didn't spend huge amount debugging this yet. I
thought maybe someone can spot an error or encountered this before.
Thanks a lot!
"Kim Grsman" wrote in message
news:453b99c680d248c7f0100e6acb19@news.microsoft.com...
> Hi Leon,
>
>> Has anyone experienced E_OUTOFMEMORY when making a cross process/DCOM
>> call through IDispatch interface on win2k? Exact same code works fine
>> on NT4(SP6) and winxp. I'm 100% sure that the machine is not out of
>> memory (perfmon). This is under VPC. What are other conditions when
>> E_OUTOFMEMORY is returned from IDispatch? does anyone know? Thanks a
>> lot!
>
> No straight ideas, but if you were to pass a wide-char string argument
> where a BSTR is expected, I guess E_OUTOFMEMORY could be provoked from the
> marshalling layer, because it peeks at the DWORD preceding the pointer,
> and attempts to reallocate it for marshalling.
>
> What can you tell us about the specific method call?
>
> --
> Best Regards,
> Kim Grsman
>
>
date: Wed, 25 Jan 2006 21:44:04 -0500
author: Leon Finker am
|
|