Im still trying to find the bug (and then a fix :-), but it would help me a lot, if someone could tell me where the GL_IDirect3DImpl_3_CreateDevice gets called from.
Well, the real question is to wonder why the application requests to create a Direct3DDevice2 and not a D3DDevice3 as it should...
For that, look at any enumeration function called before this and check that it returns the right interface. Because, well, the application cannot just invent this GUID, it needs to get it from somewhere.
Check also your registry (so that maybe if there was a bug once, you maybe 'polluted' your registry with an old and wrong GIUD that now makes the application crash).
Anyway, not really able to debug right now (I am 'roaming' and on Win2K right now as I have no net access on Linux).
Lionel