Привет, переполнение стека: иногда читатель, первый раз постер.
Предыстория:
Коробка Windows с XP SP3, которая скоро будет обновлена до Windows Seven (MSDNAA ‹3)
У меня есть внедренная DLL, которая получает циклы, перехватывая функцию, которая вызывается тысячи раз в секунду.
Я хотел бы общаться/управлять этой DLL через приложение Python. По сути, DLL делает всю работу, а приложение python обеспечивает мозги/принятие решений.
Мой план игры для этого состоит в том, чтобы иметь счетчик и оператор if в DLL. Каждый раз, когда вызывается перехваченная функция, counter++ и затем возвращаются к исходной функции до тех пор, пока не произойдет что-то вроде if ( counter == 250 ) { // dostuff(); }. Мое мнение, что это позволит целевому приложению работать в основном беспрепятственно, но все же позволит мне делать интересные вещи.
Проблема:
Я в полной растерянности, какой метод IPC мне следует использовать для связи. У нас есть сокеты, разделяемая память, каналы, отображение файлов (?), RPC и другие (на первый взгляд) эзотерические вещи, такие как запись в буфер обмена.
Я НИКОГДА не реализовывал какие-либо IPC, кроме игрушечных примеров.
Я совершенно уверен, что мне нужно что-то, что:
- Может поддерживать обмен данными между Python и DLL.
- Не блокирует/ждет
- Можно проверить наличие ожидающих данных и продолжить, если их нет.
- Если задействованы блокировки, можно продолжить вместо ожидания
- Не требует много времени для чтения/записи.
Помощь? Спасибо за ваше время, я надеюсь, что предоставил достаточно общей информации и не нарушил никаких общепринятых соглашений.
Я хотел бы добавить, что поле связанных вопросов очень крутое, и я просмотрел его перед публикацией.