Programming/C/C++/C#
C# - Exception - PInvokeStackImbalance
휘탱
2016. 1. 20. 21:15
Exception - PInvokeStackImbalance(함수 호출 규약)
호출 결과 스택이 불안정하게 되었습니다. 뭔 소리지??
이런경우 함수 호출 규약이 맞지 않아서 발생함.
함수 호출 규약을 맞게 설정하면 해결된다.
예외 발생 코드.
1 2 | [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr CallNextHookEx(IntPtr idHook, int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam); | cs |
DllImport에 함수 호출 규약을 설정하면 된다.
예외 발생 수정 코드.
1 2 | [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true, CallingConvention = CallingConvention.StdCall)] private static extern IntPtr CallNextHookEx(IntPtr idHook, int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam); | cs |
StdCall 어디서 많이 본거 같지 않은가?
함수 호출 규약을 모르면 뭔소리인가 잘 이해가 안될꺼임.
아래는 함수 호출 규약을 정리한 글의 링크.
pinvoke.net - 사이트에서는 C#/VB.NET 사용자를 위한 PInvoke 선언을 모아놓음
반응형