compiling test.idl with dceidl - bit lairy and archaic

Robert Shearman rob at codeweavers.com
Wed Jan 19 18:17:35 CST 2005


Luke Kenneth Casson Leighton wrote:

>On Wed, Jan 19, 2005 at 05:37:24PM -0600, Robert Shearman wrote:
>  
>
>>While you have demonstrated to me that the dceidl IDL compiler is very 
>>capable (and I did not doubt this), you still haven't demonstrated how 
>>this can benefit the Wine project. Yes, we can generate our own 
>>(probably) compatible client/server glue code (and this is ok for 
>>library-implemented functions like the registry or service functions), 
>>however we then lose focus on the applications for which we don't have 
>>source code for and depend on rpcrt4 being implemented. This is the most 
>>common use for Wine! 
>>    
>>
>
> i understand.
>
> okay - i understand the need [and the distinction], i don't have
> any knowledge [detailed knowledge] of what rpcrt4 does, other than
> i believe it to be used to interpret the "type string" tables.
>
> would that be correct?
>  
>

Yes. The Ndr* functions interpret the type strings and carry out the 
different operations, like marshal, unmarshal, size buffer and free. The 
Rpc* functions are effectively the actual implementation of the DCE/RPC 
client/server.

>>If you have any ideas on how we can solve this, 
>>please let me know.
>>    
>>
> 
> okay.  my initial feeling is that the APR team's example should be
> followed.
>
>
> is the list of functions that you have in the wine cvs tree for
> the rpcrt4 dll a complete list?
>
> things like RpcEpRegisterA in rpc_epmap.c, yes?
>
> the simplest and probably the most naive approach that springs to mind
> would be to call the functions available in FreeDCE.
>
> RpcEpRegisterA to call rpc_ep_register.
>
> RpcServerInqBindings to call rpc_server_inq_bindings.
>
> that sort of thing - just like they do in APR.
>
> naive?  almost certainly.
>  
>

That's certainly one way of doing it. I only worry about Microsoft-only 
extensions made to the API. For example, RpcServerRegisterIfEx and 
RpcServerRegisterIf2 (these are probably be the most commonly used 
extensions). Information can be found about them on MSDN.
How easy would it be to add extensions like this to the FreeDCE project?
How easy would it be to add support for client impersonation 
(RpcImpersonateClient, RpcRevertToSelf)? These functions will be 
important for other projects using our code to run services in 
privileged processes (namely, the ReactOS project).
You are starting to convince me that there is some potential for FreeDCE 
in Wine.

Rob



More information about the wine-devel mailing list