Заезженное "кем занят файл"

Тема в разделе "WASM.WIN32", создана пользователем QuAzI, 12 янв 2010.

  1. QuAzI

    QuAzI New Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    26
    Адрес:
    Belarus
    Добрый день
    Почитал про 3 способа работы с занятыми файлами, покурил msdn на ZwQueryInformationFile, понял что из usermode мне надо использовать NtQueryInformationFile.
    Остался один вопросец. Мне нужно просто проверить, открыт ли конкретный файл. Я могу это сделать зная его полное имя или мне придётся в любом случае перечислять все открытые файлы и сравнивать их с моим?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    И чем оно тебе поможет с занятыми файлами?

    Перечислить все хендлы, выбрать хендлы типа "файл", скопировать себе и сделать ZwQueryObject (ObjectNameInformation).
     
  3. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    а нельзя просто открыть этот файл, получить INVALID_HANDLE_VALUE, а затем проверить статус? конечно, если требуемый файл не был открыт с правами share all. а вообще, честно говоря я не понял что требуется сделать. какие три способа? где прочитал?
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Есть "дзенная" статья мсрема про работу с занятыми файлами на этом сайте.
    Можно. Если как раз таки не открыт с share all. Впрочем, что нужно автору я так и не понял.

    На канале я высказался насчет ZwQueryInformationFile, упомянутой в первом посте:
     
  5. gorodon

    gorodon New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2009
    Сообщения:
    301
    Greate Так все же - средствами WinAPI (без Nt|Zw) возможно определить, какие процессы юзают заданный файл (открытый с пом-ю CreateFile)?
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Насколько мне известно, нет