こんにちはスタックオーバーフロー:時々読者、初めてのポスター。
バックグラウンド:
XP SP3を実行しているWindowsボックス、まもなくWindows Sevenにアップグレードされます(MSDNAA <3)
1秒間に数千回呼び出される関数をフックすることでサイクルを取得するDLLが挿入されています。
Pythonアプリを介してこのDLLを通信/制御したいと思います。基本的に、DLLが機能し、Pythonアプリが頭脳/意思決定を提供します。
これを行うための私のゲームプランは、DLLにカウンターとifステートメントを含めることです。フックされた関数が呼び出されるたびに、counter ++を実行し、if(counter == 250){// dostuff();のようになるまで元の関数に戻ります。}。この背後にあるのは、ターゲットアプリをほとんど妨げられずに実行できるようにすることですが、それでも興味深いことを実行できるようになります。
問題:
私は、通信を行うためにどのIPC方式を使用すべきかについて完全に途方に暮れています。ソケット、共有メモリ、パイプ、ファイルマッピング(?)、RPC、およびクリップボードへの書き込みのような他の(一見)難解なものがあります。
私はおもちゃの例以外の種類のIPCを実装したことはありません。
私は私が何かが必要だとかなり確信しています:
- PythonとDLLの間のやり取りを処理できます
- ブロック/待機しません
- 待機中のデータを確認し、データがない場合は続行できます
- ロックが関係している場合は、待つ代わりに続行できます
- 読み取り/書き込みにも多くの時間を要しません
ヘルプ?お時間をいただきありがとうございます。十分な一般情報を提供し、受け入れられている慣習に違反していないことを願っています。
関連する質問ボックスはとてもかっこいいので、投稿する前によく読んでみました。