|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.06.2011, 21:23 | #1 |
Регистрация: 12.06.2011
Сообщений: 3
|
Контроль доступа к функции в dll
Всем привет
Не совсем понимаю в чем проблема, подскажите кто знает: Вобщем есть библиотека с функцией движения мыши, к ней обращаются несколько приложений и иногда одновременно, вследствие чего все виснет. На сколько я сумел разобраться - для решения этой проблемы можно использовать обьекты синхронизации MFC. Я пробовал использовать критические секции, но результата не ощутил (то есть при одновременном обращении к длл функции из нее вызываются одновременно) или может существует другое решение? часть кода длл: Код:
Спасибо зарание за любую помощь |
12.06.2011, 21:37 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
если несколько приложений то смотрите в сторону именованных объектов синхронизации
например события(event) или мютексы(mutex) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
12.06.2011, 23:50 | #3 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Guest666, принцип вообщем верный, только ошибка в том что:
CRITICAL_SECTION critsect должна быть объявлена в .shared секции dll. А то сейчас получается, что каждое из приложений инициализирует свою копию этой переменной. |
20.06.2011, 21:57 | #4 |
Регистрация: 12.06.2011
Сообщений: 3
|
с мьютексами совсем все запутанно, пробую евенты:
Код:
Последний раз редактировалось Guest666; 21.06.2011 в 20:46. |
24.06.2011, 11:07 | #5 |
Регистрация: 12.06.2011
Сообщений: 3
|
вобщем после миллиона попыток всевозможных способов и комбинаций, все такие получилось сделать чтоб работало нормально:
HANDLE m_mutex; m_mutex = CreateMutex(NULL, FALSE,"TestMUTEX"); WaitForSingleObject(m_mutex, INFINITE); КРЕТИЧЕСКАЯ СЕКЦЯ ReleaseMutex(m_mutex); при этом я убрал m_mutex из расшаренной секции в длл (так не работало) |
25.06.2011, 03:11 | #6 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Какая-то каша из объектов ядра и критических секций.
Что-то лишнее. Рекомендую Джеффри Рихтера. Реально в тему. http://www.delphilab.ru/files/book/Richter.zip |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Dll и функции | Antistas | Общие вопросы Delphi | 16 | 08.02.2011 15:03 |
Вызов функции из DLL(C#) | ZverSS88 | Помощь студентам | 0 | 25.11.2010 11:27 |
Вызов функции из dll-ки | VVVadim | Общие вопросы Delphi | 2 | 28.04.2009 10:37 |
Функции binkw32.dll | Volkogriz | Общие вопросы Delphi | 3 | 16.10.2007 11:46 |
DLL + Процедуры(не функции) | LEKA | Общие вопросы Delphi | 1 | 02.05.2007 20:37 |