Задать вопрос
@ilysion_in_life

Как избавится от A call to PInvoke function unbalanced the stack?

собственно кто сталкивался с таким и как боролся?
"PInvokeStackImbalance" : "A call to PInvoke function 'KeyHook!KeyHook.WinApi_TX::CallNextHookEx' has unbalanced the stack.
вызов:
retValue = WinApi_TX.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam);

сама функция:
[DllImport(k_User32Dll, CharSet = CharSet.Auto, SetLastError = true, CallingConvention = CallingConvention.Cdecl)]
        public static extern int CallNextHookEx(IntPtr hhk, int nCode, MouseMessages wParam, [In]MSLLHOOKSTRUCT lParam);
  • Вопрос задан
  • 122 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@kttotto
пофиг на чем писать
Надо смотреть как Вы скомпилировали саму функцию. Думаю разница в соглашениях, CallingConvention.Cdecl. Может она скомпилирована как stdcall?
Вот подобный вопрос
Ответ написан
@ilysion_in_life Автор вопроса
почистил и пересобрал проект, не помогло
Ответ написан
Комментировать
@Sumor
Все вызовы WinApi являются stdcall (winapi). Отличие от Cdecl - как раз в том, кто прочищает стек с параметрами.
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
public static extern int CallNextHookEx(IntPtr hhk, int nCode, MouseMessages wParam, [In]MSLLHOOKSTRUCT lParam);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы