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 선언을 모아놓음
반응형
'Programming > C/C++/C#' 카테고리의 다른 글
asm - 어셈블리어 기초2 (4) | 2016.04.13 |
---|---|
asm - 어셈블리어 기초 (1) | 2016.04.09 |
C++ - 비트 출력 해보기 (1) | 2016.03.09 |
C# - abstract 추상화 (0) | 2016.01.26 |
C# - 파일 존재 여부 확인방법 (0) | 2015.12.24 |
C++ - 연산자 operator (0) | 2015.12.16 |
C++ - 포인터를 이용해 배열 만들기 (0) | 2015.12.01 |
C# - 주석처리 기능 summary (0) | 2015.08.27 |