Делаю следующее. Перечисляю все хэндлы в Windows. Затем для каждого хэндла делую следующее. OpenProcess(PROCESS_DUP_HANDLE, TRUE, handle);NtDuplicateObject(h_process, handle, (HANDLE)0xffffffff, &h_new, 0,TRUE, 0xfffffffe); NtQueryObject (h_new, 1, 0, 0, &num_bytes); Проблема в следующем если num_bytes == 0, то при вызове NtQueryObject (h_new, 1, buff, 0x10000, &num_bytes); мой процесс в некоторых случаях повисает и его никак не возможно снять. Вопрос: есть ли функция-аналог NtQueryObject в которую передается какойнибуть h_event и т.д., а управление возвращалось бы вызывающему патоку? Мот есть другие способы узнать имя объекта?
Это смотря какой Object и смотря какие цели - с уровня ядра или user-mode. Задача какая ? Скажем для станции и декстопа это GetUserObjectInformation. Кстати, в твоём методе может быть проблема с пайпами (синронизироваными). Так что детальней.
С этим глюком наверное многие сталкиваются. NtQueryObject подвисает обычно на занятых файлах либо на именованых каналах которые находятся в ожидании сообщения. Причина этого - ошибки в самом ядре системы. Один из вариантов решения проблемы - запуск NtQueryObject в отдельном потоке который прибивается по таймауту.
Я проверяю тип объекта и работаю только с файлами. Создавать поток пробавал, работает слишком медленно. Приходится запускать около 15000 потоков. Мот есть ф-ция для запроса имени файла в которую передаеться Event?
http://www.wasm.ru/forum/index.php?action=vthread&forum=4&topic=7728 http://www.wasm.ru/forum/index.php?action=vthread&forum=4&topic=9299 ImgList - http://www.anticracking.sk/ElicZ/export.htm Насколько я знаю, эту проблему так никто и не решил. Никаких функций "для запроса имени файла в которую передаеться Event" точно нет.