Я создаю неуправляемую DLL в Visual Studio 2010.
Чтобы протестировать мою DLL, я создал другой проект с помощью Visual Basic и приложил его к решению.
Код VB вызывает мою функцию InstallHook в DLL, передавая делегат функции обратного вызова в VB. Затем DLL создает ловушку, и каждый раз, когда нажимается клавиша, вызывается обратный вызов VB, получающий ключ и некоторые другие параметры в качестве аргумента.
Ну, проблема в том, что после нажатия некоторых клавиш, и буфер в обратном вызове VB достигает определенного размера, происходит сбой программы. Чтобы быть более точным, когда обратный вызов вызывается в последний раз, и он записывает в свой буфер в VB, это похоже на то, что он где-то перекрывается, потому что в следующий раз, когда обратный вызов будет вызван в DLL, сбой программы не достигнет обратный вызов (указатель в dll в порядке)
Я не очень хорошо понимаю архитектуру .Net, и я не знаю точно, что может быть не так, но я очень уверен в написанном мною коде, и проблема должна быть чем-то техническим с управлением памятью в .Net.
Редактировать: Я забыл сказать, что если я вызываю обратный вызов из кода VB, то он работает нормально. Обратный вызов обычно вызывается из WndProc, установленного в том же окне.
Спасибо ....