А именно не того файла, с которым работают — а того исполняемого, который работает. Его контрольную сумму на данный момент.
Придумал такое решение:
— в каллбеке фильтра информация (включая путь к этому exe) не добавляется сразу в глобальную очередь записи в лог, а создается новый поток и она передается в него
— этот поток пытается открыть файл и посчитать MD5, результат добавляет в глобальную очередь
— поток логирования, как и сейчас, каждые N времени проверяет, не пуста ли очередь, если полна — создает файл лога и пишет ее всю
Но есть вопросы:
— насчет открывания файлов, насколько будет велик шанс, что он сможет открыть EXE-файл, который, скорее всего, сейчас выполняется?
— сможет ли он открывать его так, чтобы гарантированно не повредить ему этим (если тот читает себя самого — SFX, например)?
— нету ли все-таки какого-то более готового способа получить хоть какой-то хеш EXE-файла? Который не только лежит на диске как файл, но и загружается как процесс.
— как лучше упорядочить все это? Сейчас каждая запись лога датирована временем перехвата, имя файла лога датировано временем выгрузки в потоке логирования. Смотрим лог "12:00", видим в нем события между предыдущим логом и 12:00.
А с этим MD5 мы получим нарушенный порядок везде...
Если кратко, то вопрос: драйверу лучше на это забить совсем (пусть утилита для чтения логов упорядочивает) или пытаться все-таки привести в нормальный вид?