Стоит задача узнать PID процесса,который занимает открытые файлы с заданным именем. Как такое реализовать в Windows? Да, читал про апишные функции NTQuerySystemInformation, NtQueryInformationFile, но хороших статей на эту тему не видел. Также необходима "универсальность кода",чтобы 1 и тот же код одинаково выполнялся на x64 и x86, а вот эти самые функции этим похвастаться не могут. Если есть люди,которые имели дело с такими вещами, прошу отписаться Реализовывать собираюсь под visual c++
http://sources.ru/builder/faq/058.html http://www.progiblog.ru/cgi-bin/content.pl?id=2862 http://forum.vingrad.ru/forum/topic-197941/kw-createprocess-openprocess.html поиск по гуглу
спасибо,конечно, но мне не только exe файлы узнавать нужно. к примеру, есть txt файл.я открыл его notepad-ом в процессах висит notepad.exe и мой текстовый файлик,получается, считается закрытым...
перебираешь список открытых дескрипторов в системе через ZwQuerySystemInformation (SystemHandleInformation), потом ищешь там объекты типа "файл" (придется сначала динамически узнать номер типа ObjectTypeNumber для файлов - открыть тестовый файл и глянуть тип в его хендле). Далее делаешь ZwQueryInformationFile чтобы узнать нужный ли это тебе файл. И составляешь список всех, кто удерживает его описатели. ЗЫ. Модеры, переместите тему в WASM.WIN32, к этому разделу она не имеет никакого отношения