Hi,
In my project I call some C functions from C# code, and some times I should
use callback functions. Usually all works fine.
But in some cases I have following problem :
Error Message: Run Time Check Failure #0 The value of ESP was not properly
saved across a function call. This is usually a result of calling a function
declared with one calling convention with a function pointer declared with a
different calling convention
I implement call back through "delegate" statement. Is it possible to change
calling conversion for callback function in C# ?
Thanks
Max
Nicholas Paldino [.NET/C# MVP] - 31 Mar 2004 22:31 GMT
Maxim,
I don't think that there is a way to do this. The only way I can think
to do this would be to create a shim of some kind in unmanaged code, which
would store the function pointer passed to it (which uses a standard calling
convention, which is what I imagine .NET passes) and then expose a function
which can be passed to the function you want to call with the correct
calling convention.
Hope this helps.

Signature
- Nicholas Paldino [.NET/C# MVP]
- mvp@spam.guard.caspershouse.com
> Hi,
>
[quoted text clipped - 13 lines]
> Thanks
> Max
JLarkin - 31 Mar 2004 23:21 GMT
H
Have a look at the CallingConvention enumeration in the msdn docs. This may be what you are looking for.
Maxim Kazitov - 01 Apr 2004 05:03 GMT
No this doesn't help.
But I found intersting article :
http://groups.google.com/groups?selm=ew6mLkV6BHA.1932%40tkmsftngp03
> Hi
> Have a look at the CallingConvention enumeration in the msdn docs. This may be what you are looking for.