WineConf Agenda

Andrew Tridgell tridge at
Mon Apr 4 00:33:57 GMT 2005


 > > Finally, if we have time, I'd like to discuss cooperation on IDL files
 > > and MSRPC interfaces.
 > Yes I would like to discuss this as well. Eirc Kohl has made quite
 > a lot of changes to WIDL for ReactOS to support our MSRPC and PLug
 > and Pray implementation and I would like to see these changes
 > merged back in for Wine and Samba so we can adopt a common IDL
 > compiler.

My take on the way we could cooperate on IDL is that the most
effective route is by sharing IDL files, and sharing knowledge. I
think that sharing the actual IDL compiler is much more problematic

The reason for this is that Wine really needs RPC/IDL support with
compatibility at the object code level, so that existing Win32 code
that calls the low level marshalling APIs continues to work. This puts
a strong restriction on the approach your compiler needs to take,
including needing to use the "format string" table based
approach. Please correct me if I am wrong about this.

The Samba project doesn't need object code compatibility, we need only
wire compatibility. While we could implement wire compatibility via
object code compatibility, it might significantly restrict some of the
more interesting things we are doing with IDL at the moment. We have
taken the notion of IDL for RPC interfaces and expanded it to be used
for all sorts of regular marshalling/unmarshalling tasks, including
NBT (and WINS), DGRAM packets and even for on-disk format of xattrs
for extended NTFS filesystem attributes.

To do this, we have extended IDL in our compiler in quite a number of
ways, allowing for constructs that MIDL does not handle. We would be
very reluctant to give up those extensions as they have proved to be
very valuable, and it might prove difficult to keep those extensions
in some cases if we adopted the table based IDL compiler approach.

While I am certainly open to discussing ways in which this might
change, I suspect that for the moment the needs of our two compilers
will keep them separate.

What we can do, however, is cooperate on the IDL files themselves and
on test suites and knowledge about how the associated machinery works
(such as the many RPC auth, sign and seal methods).

To this end we have put the following note in our IDL directory:

  The IDL files in this directory are made available by the Samba Team
  under the following license:

    Permission to use, copy, modify, and distribute these interface
    definitions for any purpose is hereby granted without fee.

    This work is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of

It is our hope that this is sufficient for the Wine developers to be
happy about using our IDL files in Wine, or at least grabbing any bits
that are useful. Our collection of IDL files is not complete, but it
is growing and already includes quite a lot of useful stuff. We also
have quite extensive test suites for most of the IDL we have written.

Another thing we should discuss is the methods by which we develop new
IDL files that are compatible with the interfaces that Microsoft uses
in MSRPC. We have become quite proficient in that area, and it might
be useful to have some discussions with some interested Wine
developers on how that is done. I'm sure we can learn things from each
other in that area.

Cheers, Tridge

More information about the samba-technical mailing list