Any DCOM experts?

Gregory M. Turner gmturner007 at
Thu Mar 27 14:48:03 CST 2003

On Thursday 27 March 2003 01:08 pm, Bill Medland wrote:
> Hi guys
> For the next part of the work I am doing I am trying to figure out if there
> is any way that the DCOM part of one of our products is going to work under
> Wine at the server end.
> I am not having much success so far and I was wondering if anyone knows
> whether this is because I don't have things set up properly or if it is
> because of some inherent known lack of functionality.
> To start the ball rolling I was working with MSDN's DCOMTST test program
> pair.
> I managed to get that working using the local server (after adding the
> definition of IStream to the registry) but am having no luck getting the
> client under Wine to talk to the server under Win98.  In fact the client
> side doesn't even seem to send out a single TCP/IP packet.

There is no implementation of the TCP/IP transport at this time.  Wine will 
fail to make interprocess calls without any indication of this failure in 
some cases.  Frankly, I'm pleasantly surprised to hear that even DCOMTST 

The RPC implementation in wine is not up to par yet.  DCOM needs RPC to do 
it's dirty work, so interprocess RPC is very shaky, and interprocess between 
wine and real windows is non-existant.

The good news is that there are people working on this, in particular, Ove 
Kaaven and myself, although we are not exactly making headlines with our 
earth-shaking progress at this moment.  The bad news is that getting wine to 
talk to windows via RPC is a pretty distant target right now; there are lots 
of "lower hanging fruit" that will presumably be addressed first.

> (Aside - Nice demonstration of lazy Microsoft code; in their error
> reporting they call FormatMessage, ignore the return code and somehow print
> the returned error message, even when one hasn't been allocated; I guess it
> only works under Windows because the print routine traps the access
> violation)

or maybe the thing was supposed to be allocated and wine didn't do it 
properly.  Always presume wine is at fault, not Microsoft; you will usually 
be correct, especially in DCOM territory!

> I am currently running native ole32 and native rpcrt4.

Then you are really using Microsoft's DCOM implementation, and not wine's.  
Which may not be a bad choice if you want it to "just work" as much as 
possible.  I have successfully used native ole32 and rpcrt4 to talk to SQL 
server via the MMC interface, quite a bit of RPC involved.  It didn't work 
too well, but it was interesting to see it work at all.

> The builtin rpcrt4 fails on a call to unimplemented
> RpcServerInqDefaultPrincName but I don't understand why it is even calling
> that; why does it think I have Netware only and why does it think this is a
> server process.

This is another unimplemented chunk of DCOM: the RPC name services do not 
exist.  Samba and dce rpc have this feature so it's not unattainable... but 
it ain't there yet.  The name services and other networked DCOM services 
require priveleged ports that wine can't even use without some kind of 
medium-scale reconceptualization of the basic wine security model anyhow... 
it's easy to imagine reasonable solutions to that too, but it will take some 

> Anyone an expert in any of this stuff?

Yes, but unfortuantely, they all seem to work for Microsoft ;)  Seriously, 
some of it is undocumented, some of it is well documented.  There are 
probably only a handful of people in the world who could answer some of the 
hard questions without reverse-engineering the answers, and they probably do 
work for Microsoft.  So for wine, we must read the specs and reverse engineer 
the rest.  It's not a pretty landscape and you will need to be patient, but I 
believe there is a light at the end of the tunnel.


"An honorable Peace is and always was my first wish! I can take
no delight in the effusion of human Blood; but, if this War should
continue, I wish to have the most active part in it." --John Paul

More information about the wine-devel mailing list