Интересует следующее, При создании файла на диске в системе создается FILE_OBJECT через который собственно и идет I/O. имея указатель на File_Object, возможно ли отследить момент удаления/уничтожения FileObject в системе???
Marik, я это делал следующим образом: Вёл хэш-массив где ключ - это FILE_OBJECT, как это делается в примере FileSpy, причём на каждом IRP_MJ_CREATE проверял: Код (Text): irpSp = IoGetCurrentIrpStackLocation(irp); if (irpSp->Parameters.Create.Options & FILE_DELETE_ON_CLOSE) { ..установить флаг в хэше для этого FILE_OBJECT } Потом, получая IRP_MJ_CLEANUP проверял: Код (Text): if (irpSp->FileObject->DeletePending || /*в хэше для данного FILE_OBJECT стоит флаг*/) { //намечается удаление } //посылаем запрос нижележащему драйверу if (/*успешно*/) { //файл закрыт и скорее всего удалён, записать в лог } Только здесь есть риск получить запись "файл удалён" несколько раз, но зато ты точно не пропустишь удаление, ну возможно получишь это сообщение несколько раз. Мне, честно говоря, тоже такой подход не нравится, но другого я не придумал (