dinput: Convert IDirectInput into multi-interface object.

Vitaliy Margolen wine-devel at kievinfo.com
Thu Jul 12 07:19:01 CDT 2007


Stefan Dösinger wrote:
> Am Donnerstag, 12. Juli 2007 06:51 schrieb Vitaliy Margolen:
>> Fixes bug 5920.
>> ---
>>  dlls/dinput/dinput_main.c    |  467
>> +++++++++++++++++++++++++++--------------- dlls/dinput/dinput_private.h |  
>>  6 +-
>>  2 files changed, 311 insertions(+), 162 deletions(-)
> Did you test which interfaces can be QueryInterfaced from which interface? In 
> theory all interfaces should be queryable from all interfaces, but in 
> practise Microsoft violates their own COM rules in ddraw, so I'd expect them 
> to do so in other DirectX DLLs. In DDraw we do not(yet) implement the 
> restrictions, but we have some todo_wine tests to document it.
> 
> 
I didn't test all the possibilities, only 2:
1. CoCreateInstance(IDirectInput7W). QueryInterface(IDirectInput7A).
1. CoCreateInstance(IDirectInput8W). QueryInterface(IDirectInput8A).

IMHO the opposite should work too (A->W). As far as DI7<->DI8, I had to add 
that into the mix too, because DI8 thunks all the methods into DI7 and apps 
had problems with creating DI8 objects.

In the future DI7 and DI8 should probably be separate, and implemented in 
their respective dlls.

Vitaliy.



More information about the wine-devel mailing list