| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Dll callback |
| Автор: jimbo 2.9.2009, 16:11 | ||
| Привет всем! Хочется написать ддл-ку, чтобы при ее присоединении к программе, необходимо было создать колбэк функцию для общения с длл. Как это сделать? Допустим, длл считывает файл периодически, в файле просто цифры или текст, считывает в буфер, что-то типа:
а в клиенте мы подгружаем нашу длл, создаем колбэк и получаем текущий буфер если он изменился или там каждые 5 секунд. Как написать колбэк? Помогите пожалуйста, желательно с примерами кода) |
| Автор: Earnest 2.9.2009, 18:54 |
| И зачем тут callback? Callback - это функция в твоем коде, вызываемая откуда-то извне, по наступлению конкретного события. Чтобы получать доступ к буферу каждые 5 минут, нужно написать соответствующий код - в клиенте, разумеется. Повесить его на таймер, например. А в DLL предусмотреть функцию типа GetBuffer(). Сравни, чтобы сделать через callback, тебе нужно: - написать callback-функцию а основном коде - написать в DLL метод установки callback (типа SetCallBack (...)) и завести переменную, в которой ты будешь его хранить - запустить каким-то образом таймер, по которому нужно вызывать callback - т.е. либо к какому-то окну приложения цепляться (его еще нужно получить) либо создать поток (еще один) с WaitableTimer... |
| Автор: jimbo 3.9.2009, 09:28 |
| я может неправильно выразился. Мне хочется написать что-то наподобие ДДЕ сервер-клиент приложения, только со своими данными. Клиент делает подключение, дает понять серверу что хочет получать данные и создает колбэк для принятия этих данных только тогда когда у сервера эти данные появляются. сервер передает что-то типа: код сообщения, данные1, данные2, данные3 и.т.д. в колбэке клиент делает обычный свитч на код сообщения и кучу веток обработки. Функция GetBuffer() на мой взгляд тривиальна, что если переменных много? мне для каждой писать свою функцию? В общем-то можно конечно, но хочется также изучить процесс создания колбэков. |
| Автор: jonie 3.9.2009, 11:01 | ||||||||||
Кроме того, для этих целей (тех что вы описываете) есть КУЧА так называемых MQ-реализаций - например XMPP, AMPQ, MSMQ, Stomp, MS BizTalk - вам нужен велосипед ? Впрочем, конечно систему можно сделать и как описываете её вы...
каллбэк это просто функция, с т.з. C++ это обычный указатель на память..... т.о. в неком общем *.H файле (SDK в общем)
далее в exe дефайните THIS_IS_EXE_FILE, например в stdafx.h ПЕРЕД включением нашего SDK-шного H файла. и описываете функцию регистрации:
после чего пишите длл-ки:
в общем сумбурно объяснил.. наверно надо пример ваять... |
| Автор: jimbo 19.10.2009, 14:45 |
| Да нет, нормлаьно объяснили, спасибо Добавлено через 3 минуты и 30 секунд я просто так понял .что колбэки никто не использовал, слишком муторно и есть другие реализации. я просто хотел изучить процесс обработки сообщений между окнами и диалогами. |