Я хочу захватить чтение файла с использованием ETW Microsoft-Windows-Kernel-File
поставщик. Похоже, что мне нужно соотнести 2 типа событий, используя FileObject
(или же FileKey
) имущество:
Имя создать
{
"Type": "name create",
"FileObject": 123,
"FileName": "\\Device\\HarddiskVolume3\\file.txt"}
Читать
{
"Type": "read",
"FileObject": 123,
...
}
Который я могу объединить в file read
событие
{
"Type": "file read",
"FileObject": 123,
"FileName": "\\Device\\HarddiskVolume3\\file.txt",
...
}
Проблема в том, что я получаю только name create
события для вновь открытых файлов. Если файл не был закрыт, я не получу name create
событие, и это невозможно сформулировать read
событие, чтобы получить имя файла. Эта информация была предоставлена с name create
до того, как мой подписчик был прикреплен.
Вопрос: Можно ли заставить ETW отправлять все события, необходимые для такой корреляции? Другими словами, как мой подписчик может получить кэшированный name create
события из прошлого?
Я использую C ++, Кребс, Microsoft-Windows-Kernel-File {EDD08927-9CC4-4E65-B970-C2560FB5C289}
поставщик (который не имеет документов). Я экспериментировал с поставщиками ядра: диск а также файл и, похоже, проблема корреляции тоже есть.
Задача ещё не решена.
Других решений пока нет …