FILE_OBJECT

Discussion in 'WASM.NT.KERNEL' started by Marik, Mar 13, 2008.

  1. Marik

    Marik New Member

    Blog Posts:
    0
    Joined:
    Jun 21, 2006
    Messages:
    166
    Location:
    Russia
    Интересует следующее,
    При создании файла на диске в системе создается FILE_OBJECT через который собственно и идет I/O.
    имея указатель на File_Object, возможно ли отследить момент удаления/уничтожения FileObject в системе???
     
  2. n0name

    n0name New Member

    Blog Posts:
    0
    Joined:
    Jun 5, 2004
    Messages:
    4,336
    Location:
    Russia
    можно, но муторно и не надежно.
     
  3. n0name

    n0name New Member

    Blog Posts:
    0
    Joined:
    Jun 5, 2004
    Messages:
    4,336
    Location:
    Russia
    например перехват fileTypeInitializer.DeleteProcedure == IopDeleteFile.
     
  4. Sheph

    Sheph New Member

    Blog Posts:
    0
    Joined:
    Jan 24, 2008
    Messages:
    89
    Marik, я это делал следующим образом: Вёл хэш-массив где ключ - это FILE_OBJECT, как это делается в примере FileSpy, причём на каждом IRP_MJ_CREATE проверял:
    Code (Text):
    1. irpSp = IoGetCurrentIrpStackLocation(irp);
    2. if (irpSp->Parameters.Create.Options & FILE_DELETE_ON_CLOSE)
    3. {
    4.  ..установить флаг в хэше для этого FILE_OBJECT
    5. }
    Потом, получая IRP_MJ_CLEANUP проверял:
    Code (Text):
    1. if (irpSp->FileObject->DeletePending || /*в хэше для данного FILE_OBJECT стоит флаг*/)
    2. {
    3.  //намечается удаление
    4. }
    5. //посылаем запрос нижележащему драйверу
    6. if (/*успешно*/)
    7. {
    8. //файл закрыт и скорее всего удалён, записать в лог
    9. }
    Только здесь есть риск получить запись "файл удалён" несколько раз, но зато ты точно не пропустишь удаление, ну возможно получишь это сообщение несколько раз.
    Мне, честно говоря, тоже такой подход не нравится, но другого я не придумал (
     
  5. Marik

    Marik New Member

    Blog Posts:
    0
    Joined:
    Jun 21, 2006
    Messages:
    166
    Location:
    Russia
    Sheph
    Респект за подробнейший ответ, попробую!!! :)
     
  6. Marik

    Marik New Member

    Blog Posts:
    0
    Joined:
    Jun 21, 2006
    Messages:
    166
    Location:
    Russia