Re: COM question
- From: "Paul G. Tobey [eMVP]" <p space tobey no spam AT no instrument no spam DOT com>
- Date: Fri, 1 Jun 2007 10:30:56 -0700
Thank you, John. I've been looking at this since your message. I now have
the following, so maybe something else is going on here:
1. A DLL-based server with a custom interface *not* involving any weird
classes. This server will run on Windows CE 3 on this device and can be
accessed by a local client with no problem.
2. A proxy for above server compiled for Windows XP and installed on an
XPSP2.
3. A client for above server compiled for Windows XP and connecting to the
CE device by IP address. The CE device has the DCOM flag in the registry
set to Y and, as far as I can tell, should be open to the idea of
communication with XP clients.
However, when I run the client, it always returns a Class Not Registered
error from creation of the remote object (I've tried various CLSCTX values).
Using a network sniffer, I can see communication (quite a bit of it, in
fact), between the XP client and the CE server. I don't see the
class-not-registered error code being passed from CE to XP in any of the
binary data, looking for 0x80040154. Since the XP box is calling out to the
CE box, I presume that the proxy is being found, etc.
I'm at a loss for ideas here. I've verified that all of the DCOM stuff that
would be in MINCOMM when DCOM is enabled is also set on our device.
Everything in the Windows folder has been registered (;-) I can't even
figure out how to proceed, since there aren't any tools that I know of that
will tell me where the error originated or what, specifically, was wrong.
Paul T.
"John Spaith [MS]" <jspaith@xxxxxxxxxxxxxxxxxxxx> wrote in message
news:un3UbQuoHHA.4512@xxxxxxxxxxxxxxxxxxxxxxx
You've managed to stretch my knowledge of COM to the breaking point. But
I think what may be happening here is that CE doesn't have the universal
marshaller (all versions) and so it can't marshall this type
automatically. I *believe* if you put this into an IDL file and rely on
the MIDL generated proxy/stub routines it should be able to work for you.
http://www.codeproject.com/netcf/WindowsCE_DCOM.asp has a good article on
this.
Also note in CE3 we don't have the idisproxy.lib, which we added CE4 so
that Visual Basic could communicate remotely to CE device. I don't think
it should be an impact here but a heads up. idisproxy is brought in
automatically whenever you have SYSGEN_DCOM and oleautomation.
--
John Spaith
Senior Software Design Engineer
Windows CE Networking
Microsoft Corporation
http://blogs.msdn.com/cenet/.
This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use. © 2007 Microsoft Corporation. All rights
reserved.
"Paul G. Tobey [eMVP]" <p space tobey no spam AT no instrument no spam DOT
com> wrote in message news:%23jKiNFvnHHA.3968@xxxxxxxxxxxxxxxxxxxxxxx
Hi,
I'm doing some work with a COM object which is running on Windows CE
devices and which is used, via DCOM, from other devices, PCs, generally,
on the network. Most of what I'm doing works, but the object has a
method that returns an IEnumString interface pointer to the caller and
that doesn't work. There is an Interfaces entry for it in the registry
on the device, so it seems like it should be OK. Is there a known
limitation on marshaling that interface or something? Might I have left
something out of the OS that would affect this (it's a DCOM build,
headless).
To this point, I've only found the problem on CE3 devices, but will test
4.2 and 5.0 soon.
Thanks,
Paul T.
.
- Prev by Date: Re: Embedded Fusion Windows CE DVD
- Next by Date: Re: Resume Loading Order - CE 5.0
- Previous by thread: project.reg not replacing platform.reg entries
- Next by thread: Re: COM question
- Index(es):
Relevant Pages
|