Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > WinAPI
Перезагрузить страницу Объекты ядра как с ними работать
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
_guest_ _guest_ вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.03.2004
По умолчанию Объекты ядра как с ними работать - 18.03.2004, 16:15

Hello !!

Проблемма с открытием Mutex созданного с помощью CreateMutex
Большая просьба помочь (а то уже задолбался). Не пойму где ошибка ((

Пользовательское приложение:

Код:
#define MUTEX_NAME "GlogalMyMutex"
hHookMutex = CreateMutex(NULL, FALSE, MUTEX_NAME);
...
WaitForSingleObject(hHookMutex, INFINITE);
...
ReleaseMutex(hHookMutex);
Через IOCTL передаю Handle Mutex

Драйвер:

Код:
Status = ObReferenceObjectByHandle((HANDLE)(*((PULONG)pBuffer)), 0, NULL, KernelMode, &hHookMutex, NULL);
...
KeWaitForMutexObject((PRKMUTEX)pDataBlock->hHookMutex, Executive, KernelMode, FALSE, NULL);
...
KeReleaseMutex(hHookMutex, FALSE);
P.S. В результате не происходит ожидание и сброс Mutex, а винда висит наглухо ))
Ответить с цитированием
  (#2 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 19.03.2004, 01:14

проблемка по-моему лежит в том, что мутекс как объект, открытый где-то в приложении, имеет хендл, а этот хендл - это просто смещение в таблице, которая закреплена за данным приложением. Вывод: ести хендл передать куда-нибудь за пределы приложения (в другое приложение или в драйвер), то это будет смещение в таблице в другом адресном пространстве, кстати, не факт, что по вызову IOCTL драйверная функция запускается в адресном пространстве вызывающего процесса.
вообще-то, я смотрю, что мутекс именованный - так пользуй просто имя, а не сам хендл.
Ответить с цитированием
  (#3 (permalink)) Старый
_guest_ _guest_ вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.03.2004
По умолчанию 19.03.2004, 10:36

Привет Всем

На сколько я знаю MS не советует использовать именованные объекты (очевидно из-за не уникальности имен).

Используя ObReferenceObjectByHandle я создаю копию Handle т.к. это происходит в DriverDeviceControl.

Но почему-то, получая указатель на объект, я не могу с ним ничего сделать. Было подозрение, что драйвер, захватив Mutex не позволяет пользователю ничего с ним делать. В результате пользовательское приложение постоянно висит, а драйвер даже сбрасывая Mutex продолжает работать как ни в чем не было и KeWaitForMutexObject тоже не срабатывает (че за фигня ????)

З.Ы. Забыл сказать, что пользователь виснет даже не дойдя до WaitForSingleObject
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Порты i/o как ними работать Olejek Железо. Написание драйверов 1 29.03.2008 12:09
DLL библиотеки как с ними работать Exmap .NET 1 15.01.2008 22:07
С# и Oracle как с ними работать Cantona .NET 1 16.10.2007 21:17
Списки как с ними работать gleban С/С++ 9 09.06.2006 18:17
Классы как с ними работать Klose Delphi 7 31.05.2006 17:45
Рекурсия и VCL как с ними работать LARS Delphi 8 27.05.2006 19:46
C++ и SCO как с ними работать c++ Мысли вслух 6 28.01.2006 07:50
Метки как с ними работать Alter Pascal 5 26.12.2005 22:28
Сессии PHP и WML как с ними работать linux XML & WML 1 22.07.2005 15:32
Perl и PHP как с ними работать se7en Мысли вслух 1 30.11.2004 01:51
Объекты TGeneralInfo, TFixedAsciiDataset как с ними работать Garik Delphi 0 23.08.2003 03:58
IIS и ASP как с ними работать Anonymous ASP 2 04.04.2003 18:24



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов