Patrik Stridvall ps@leissner.se writes:
However, I don't think it is enough. It will work for the implemented VxDCall that pops the stack itself, however it will not work for unimplemented VxDCalls since they will not clean up the stack correctly AFAICS.
The problem is you don't know how many args to pop. In theory the name of the function tells you that, but in practice apps don't call the right version, and VxDCall pops the number of args the specific call requires no matter which version of the function is called. So this is how we do it too.
Ah. Microsoft. :-(
In any case I think Vincent and Marcus is right, it should be have a WINAPI like in Vincent patch because otherwise the "DWORD service" parameter is not popped from the stack AFAICS.
Patrik Stridvall ps@leissner.se writes:
In any case I think Vincent and Marcus is right, it should be have a WINAPI like in Vincent patch because otherwise the "DWORD service" parameter is not popped from the stack AFAICS.
No, it makes no difference whatsoever, the stack is restored from the context structure in any case. The only use of WINAPI would be to make winapi_check happy, but it would probably be better to teach it to not do that check for register functions.