python应用程序和注入的DLL之间的IPC

Hor*_*egg 5 python dll ipc code-injection

你好堆栈溢出:有时读者,第一次海报.

背景:

Windows XP运行XP SP3,即将升级到Windows 7(MSDNAA <3)

我有一个注入的DLL,通过挂钩一个每秒被调用数千次的函数来获取周期.

我想通过python应用程序通信/控制这个DLL.基本上,DLL完成工作,python应用程序提供大脑/决策.

我这样做的游戏计划是,我会在DLL中有一个计数器和一个if语句.每次调用钩子函数时,都会反转++,然后跳回原函数,直到if(counter == 250){// dostuff(); }.我虽然落后于它,但它将允许目标应用程序大部分畅通无阻,但仍然会让我做有趣的事情.

问题:

我完全不知道应该使用哪种IPC方法进行通信.我们有套接字,共享内存,管道,文件映射(?),RPC和其他(看似)深奥的东西,比如写入剪贴板.

除了玩具示例,我从未实施过任何类型的IPC.

我很确定我需要一些东西:

  • 可以处理python和DLL之间的来回交谈
  • 不阻止/等待
  • 可以检查等待数据,如果没有,则继续
  • 如果涉及锁定,可以继续而不是等待
  • 读取/写入也不需要花费大量时间

救命?感谢您的时间,我希望我已经提供了足够的一般信息,并没有违反任何公认的惯例.

我想补充一点,相关问题框非常酷,我在发布前仔细阅读过.

uli*_*tko 2

尝试套接字。你的需求本质上是异步操作的需求;Python 有asyncore模块,用于套接字上的异步 IO。同时,Python 的 stdlib 看起来不能异步处理其他 IPC 事物,所以我不建议使用它们。