артём612
30.05.2014, 20:26
Вообщем пишу программу и столкнулся со сложностями мютексов :confused:
Суть такова
App1 - это пользовательское приложение которое я пишу
App2 - это парсер мютексов
App1(пользователь нажимает на кнопочку) : Создаётся мютех с id
App2(в цикле) : Открывает все мютексы с возможными id и в зависимости от существования принимает решение :)
App1(пользователь нажимает на кнопочку) : Удаляет мютех
Проблема :
При создании мютека всё норм но при при попытке удалить,не удаляется :(
Вот мой коддинг
Для добавления мютекса в App1
bool AddIdMutex(DWORD id)
{
StrPaste(MutexHook.HeaderHook,id);
return CreateMutexA(0,false,MutexHook.HeaderHook);
}
Для удаления мютекса в App1
bool DelIdMutex(DWORD id)
{
StrPaste(MutexHook.HeaderHook,id);
HANDLE hId = OpenMutexA(MUTEX_MODIFY_STATE,false,MutexHook.Head erHook);
if(hId)
{
ReleaseMutex(hId);
return CloseHandle(hId);
}
return false;
}
Для проверки мютекса
bool IsIdMutex(DWORD id)
{
StrPaste(MutexHook.HeaderHook,id);
HANDLE hid = OpenMutexA(MUTEX_ALL_ACCESS,false,MutexHook.Header Hook);
ReleaseMutex(hid);
CloseHandle(hid);
if(hid)return true;
return false;
}
Уже разобрался.Если кому интересно то чтобы его удалить надо закрыть все хандлы по этому мютексу(попытки открытия и создания этого мютекса)
Суть такова
App1 - это пользовательское приложение которое я пишу
App2 - это парсер мютексов
App1(пользователь нажимает на кнопочку) : Создаётся мютех с id
App2(в цикле) : Открывает все мютексы с возможными id и в зависимости от существования принимает решение :)
App1(пользователь нажимает на кнопочку) : Удаляет мютех
Проблема :
При создании мютека всё норм но при при попытке удалить,не удаляется :(
Вот мой коддинг
Для добавления мютекса в App1
bool AddIdMutex(DWORD id)
{
StrPaste(MutexHook.HeaderHook,id);
return CreateMutexA(0,false,MutexHook.HeaderHook);
}
Для удаления мютекса в App1
bool DelIdMutex(DWORD id)
{
StrPaste(MutexHook.HeaderHook,id);
HANDLE hId = OpenMutexA(MUTEX_MODIFY_STATE,false,MutexHook.Head erHook);
if(hId)
{
ReleaseMutex(hId);
return CloseHandle(hId);
}
return false;
}
Для проверки мютекса
bool IsIdMutex(DWORD id)
{
StrPaste(MutexHook.HeaderHook,id);
HANDLE hid = OpenMutexA(MUTEX_ALL_ACCESS,false,MutexHook.Header Hook);
ReleaseMutex(hid);
CloseHandle(hid);
if(hid)return true;
return false;
}
Уже разобрался.Если кому интересно то чтобы его удалить надо закрыть все хандлы по этому мютексу(попытки открытия и создания этого мютекса)