ユーザーの書き込みを分析する複雑なプログラムを書いていますが、このアプリケーションを 64 ビット OS で実行すると問題が発生します。問題を再解釈するために実行できるコードを次に示します。 http://thetechnofreak.com/technofreak/keylogger-visual-c/ ただし、プログラムは 32 ビット OS でも正しく動作するため、もちろん 64 ビット OS が必要です。
この電話の後
pKbd = pKbdLayerDescriptor();
このポインタはNULLに等しい
pKbd->pVkToWcharTable
最初に解決策をグーグルで検索しようとしましたが、これは http://www.codeproject.com/Questions/211107/RegQueryValueEx-programcrash-on-64-Bit とまったく同じ問題であることがわかりましたが、そうではないようです解決策になります。何が間違っている可能性があるのでしょうか?
プログラムにはこのコードがあり、32 ビット アーキテクチャと 64 ビット アーキテクチャのポインタのサイズの違いを処理しているようです。
#if defined(BUILD_WOW6432)
#define KBD_LONG_POINTER __ptr64
#else
#define KBD_LONG_POINTER
#endif
しかし、明らかに、それは役に立ちません。