wine's setupapi.dll / newdev.dll ?

Robert Shearman rob at
Thu Dec 29 08:43:40 CST 2005

Damjan Jovanovic wrote:

>Called through rundll32.exe from umpnpmgr, it does all
>the user-interface aspects of device installation. All
>those screens you see in Windows, where you select a
>device category (eg. Mouse), then click "Next", then
>you see a list of manufacturers and their devices and
>that "Have disk" button, and then you select one and
>click "Next" and it carries on - all that is done by

That doesn't seem appropriate for Wine. We need to think hard about 
which way would be easiest for a user to use a scanner, etc. driven by 
STI. My opinion is that this functionality should be somehow integrated 
into winecfg.

>>>And does anyone know any good documentation for
>>>writing COM out-of-process servers (that use
>>>transport and have some [local] methods)?
>>What documentation do you need? ncalrpc is just like
>>any other transport 
>>- you just need to specify the right format for the
>>endpoint and the RPC 
>>runtime does the work of opening it for you. Local
>>methods are also 
>>straightforward. It just means that no remoting
>>information is generated 
>>for it. This is typically used when the convenient
>>form of the function 
>>has types incompatible with the RPC runtime. You can
>>use a remote form 
>>with the call_as attribute to allow you to write a
>>proxy/stub function to call the remote function. See
>It seems you can't do the following - Microsoft's MIDL
>specifically forbids specifying binding handles for
>COM interfaces (so wine's widl must be broken, because
>it does allow it):

Yes, it is on my TODO list to improve the error detection in widl.

>   object,
>   implicit_handle(handle_t bindingHandle)
>interface IStillImage

This doesn't make sense at all because COM interfaces don't use binding 
handles, but instead use the abstract IRpcChannelBuffer concept.

>So how else do you control which RPC binding handle is
>used in marshalling a particular COM interface?

I think you can control which transport this uses, but it isn't really 
necessary unless you are remoting across a network. What are you trying 
to do?

Rob Shearman

More information about the wine-devel mailing list