Список открытых файлов

Тема в разделе "WASM.WIN32", создана пользователем popa, 29 май 2008.

  1. popa

    popa New Member

    Публикаций:
    0
    Регистрация:
    29 май 2008
    Сообщения:
    3
    Стоит задача узнать PID процесса,который занимает открытые файлы с заданным именем. Как такое реализовать в Windows?
    Да, читал про апишные функции NTQuerySystemInformation, NtQueryInformationFile, но хороших статей на эту тему не видел. Также необходима "универсальность кода",чтобы 1 и тот же код одинаково выполнялся на x64 и x86, а вот эти самые функции этим похвастаться не могут.
    Если есть люди,которые имели дело с такими вещами, прошу отписаться
    Реализовывать собираюсь под visual c++
     
  2. ring4

    ring4 New Member

    Публикаций:
    0
    Регистрация:
    19 ноя 2006
    Сообщения:
    279
    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

    поиск по гуглу
     
  3. popa

    popa New Member

    Публикаций:
    0
    Регистрация:
    29 май 2008
    Сообщения:
    3
    спасибо,конечно, но мне не только exe файлы узнавать нужно. к примеру, есть txt файл.я открыл его notepad-ом в процессах висит notepad.exe и мой текстовый файлик,получается, считается закрытым...
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    перебираешь список открытых дескрипторов в системе через ZwQuerySystemInformation (SystemHandleInformation), потом ищешь там объекты типа "файл" (придется сначала динамически узнать номер типа ObjectTypeNumber для файлов - открыть тестовый файл и глянуть тип в его хендле).
    Далее делаешь ZwQueryInformationFile чтобы узнать нужный ли это тебе файл. И составляешь список всех, кто удерживает его описатели.

    ЗЫ. Модеры, переместите тему в WASM.WIN32, к этому разделу она не имеет никакого отношения
     
  5. popa

    popa New Member

    Публикаций:
    0
    Регистрация:
    29 май 2008
    Сообщения:
    3
    спасибо