I might not exactly be an expert, but I don't like the extra work being done everywhere with the extra pointer. If writing the thunk functions is really so cumbersome, perhaps a macro for generating the thunk functions is in order.
Well, I am currently rewriting the code with the thunks (should be sent in this evening if nothing breaks :-) ).
I will ask though to all people voting for thunks to review the (about) 100 thunks I had to write for this patch due to this decision and to check if all are correct according to MSDN definitions.
For me, to have a little speed loss (well, it's only one additionnal memory access) in all interfaces and a lot less complex code (ie a lot less functions) is better than having the latest interface at full speed but a much bigger (IMHO) speed loss for all old interfaces (for all thunks, you have at least one comparison, one pointer arithmetic and one function call if not more if you need to thunk more than one interface). Moreover (this is not the case here, but well) if ever interface X + 1 comes out, you need to rewrite a lot of your code (as you need to create thunks for all functions in X and rewrite the X + 1 functions with the new interface).
But well, as the decision was taken, we won't go back now (otherwise, I will have spent my last 10 hours of Wine hacking time for nothing).
Lionel