views:

29

answers:

0

Hello stack overflow: Sometimes reader, first time poster.

Background:

Windows box running XP SP3, soon to be upgraded to Windows Seven (MSDNAA <3)

I have an injected DLL which gets cycles by hooking a function that is called thousands of times a second.

I would like to communicate/control this DLL via a python app. Basically, the DLL does the work, the python app supplies the brains/decision making.

My game plan for doing this, is I would have a counter and an if statement in the DLL. Each time the hooked function is called, counter++ and then jump back to the original function until something like if ( counter == 250 ) { // dostuff(); }. My though behind this it will allow the target app to run mostly unimpeded, but will still let me do interesting things.

Problem:

I'm at an utter loss on which IPC method I should use to do the communication. We have sockets, shared memory, pipes, filemapping(?), RPC, and other (seemingly) esoteric stuff like writing to the clipboard.

I've NEVER implemented any kind of IPC beyond toy examples.

I'm fairly sure I need something that:

  • Can handle talking back and forth between python and a DLL
  • Doesn't block/wait
  • Can check for waiting data, and continue if there isn't any
  • If locks are involved, can continue instead of waiting
  • Doesn't cost lots of time to read/write too

Help? Thank you for your time, I hope I've provided enough general information and not broken any accepted conventions.

I would like to add that the related questions box is very cool, and I did peruse it before posting.