2008/9/15 Louis Lenders xerox_xerox2000@yahoo.co.uk:
Rob Shearman <robertshearman <at> gmail.com> writes:
I suggest you write a test case that replicates what the application does and either send it to wine-patches with appropriate todo_wine's or attach it to the bug.
Well, it looks like the app is only checking if the uuid of the interface is defined using Context_QueryInterface, and that's about it. It doesn't really seem to try to use anything from it, as Erich's initial hack is already enough to get the apps running as well (this one:http://bugs.winehq.org/attachment.cgi?id=13379)
That's fine. You can still add a test that does the same as what the app does.
It might help you understand what needs to be done or it will help someone else implement the functionality that is causing the application to fail.
So as far as i can tell, the functionality doesn't need to be implemented at all, it's just enough to fake as if it would exist, by returning S_OK, when Context_QueryInterface is called for this specific uuid.
That's not acceptable as that change will cause applications that do use the returned interface to either crash on a NULL pointer (if you set *ppv to NULL and return S_OK) or stack corruption (if you return a pointer to the wrong interface). You will be turning a known unimplemented feature into a buggy feature which will be harder to fix later.
So what now?
If running the tests on Windows show that the interface in question is implemented for the Context object then add that interface to the object with stubbed functions.