ObQueryNameString зависает
От: cppboris  
Дата: 08.11.06 13:36
Оценка:
Привет.

Столкнулся с довольно типичной проблемой, как я понял используя поиск
Задача состоит в переборе всех хендлов файлов в системе и получения имен файлов по этим хендлам.
Сначала я делал NtQuerySystemInformation -> NtQueryInformationFile.
Но в таком случае путь не полный, без буквы диска. Так не подходит. Правда в DDK написано, что:

However, if the user has SeChangeNotifyPrivilege (described in the Platform SDK documentation), ZwQueryInformationFile returns the full path in all cases.

Не понятно тогда, почему путь не полный. Ведь эта привелегия есть по умолчанию у всех процессов
Ну да ладно. В связи с этой проблемой хотел использовать NtQueryObject, там уже с путем все нормально, правда в виде HarddiskVolueX... Но как выяснилось эта функция стабильно вешает поток На этом форуме много чего по этому поводу писали уже.
Почитав все это, решил перейти на ObReferenceObjectByHandle -> ObQueryNameString Но тоже все висит!
Хотя как я понял NtQueryObject в случае OBJECT_NAME_INFORMATION вызывает эту же ObQueryNameString...

Помогите!!!

p.s.: Большинство вызовов этих зависающих функций проходят нормально. Вешается только в некоторых случаях. Причем такое чуство, что на конкретном хендле...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.