This would be great but how do you do with COM objects. What did you do for your direct3d hooking.
Well, this is a pet project I had for a long time (and maybe will do the day I will have a faster PC and QEMU runs any Windows version in a reasonnable speed :-) ).
Basically, take the Wine DirectX framework (i.e. all the COM object methods + TRACEing) and just use it to 'wrap' the real API. The only stuff to be careful are the functions returning new COM objects (either creation functions or QueryInterface) and callbacks.
A part from that, it's something that is definitely doable in a day hacking session :-)
Lionel