MIDL and COM

Ove Kaaven ovehk at ping.uio.no
Fri Dec 7 16:49:05 CST 2001


On Fri, 7 Dec 2001, Peter Samuelson wrote:

> So different, really?

Yes.

> I thought both IDL compilers had basically the same purpose, to
> generate interface code to which you link client and server code for
> IPC or RPC.

For the most part, yes (though MIDL also generates typelibs).

> As I understand it, the client and server stubs use basically the same
> API in both IDL compilers.

The IDL (input) file has the same syntax, but if you're talking about the
generated (output) code, then no, they don't use the same API.

> I haven't investigated, but FreeDCE may not support COM directly the
> way MIDL does.  Even so, it seemed to me that retargeting the FreeDCE
> compiler so that its output links and runs with the winelib COM code
> would be easier than writing a whole new MIDL clone.

Not really. It seems to be far easier to write one from scratch (you have
heard about stuff like flex and bison, right?) than to try to maintain two
completely different marshalling implementations in the same IDL compiler.

> Presumably this would require integrating the FreeDCE and Wine runtime
> environments.  Looks like FreeDCE has a BSD-style license, so *legally*
> it can be done, but of course I don't know if it's *practical*....

Wine is about making existing Windows applications run, so code generated
with MIDL must work. Therefore, we can't use FreeDCE's core, and without
the core, integration doesn't make sense. I'm just stealing bits and
pieces from it where appropriate, but believe me, if I could, I *would*
stuff the whole thing into Wine, but that's not how MS reimplementations
of stuff works, unfortunately.





More information about the wine-devel mailing list