我一直在尋找一種解決方案,通過事件跟蹤(ETW)會話中的特定進程獲取所有讀/寫/打開/關閉文件處理來自實時會話的數據)。 我編寫了這段代碼並獲得了該操作中的所有事件,但我無法在事件中獲得FileName
或Path
。有剛FileObject
和FileKey
...
這是我的代碼,以獲取事件:從FileObject或FileKey獲取FileName在事件跟蹤ETW文件日誌C#
var sessionName = "ETWEventSession";
using (var session = new TraceEventSession(sessionName, null))
{
session.StopOnDispose = true;
using (var source = new ETWTraceEventSource(sessionName, TraceEventSourceType.Session))
{
Action<TraceEvent> logAction = delegate(TraceEvent data)
{
Console.WriteLine(log);
};
var registerParser = new RegisteredTraceEventParser(source);
registerParser.All += logAction;
var fileProviderGuid = TraceEventSession.GetProviderByName("Microsoft-Windows-Kernel-File");
session.EnableProvider(fileProviderGuid, TraceEventLevel.Informational, 0x0200);
source.Process();
}
}
我跑我的經紀人,並得到這樣的活動:
<Event MSec="0.0000" PID="11376" PName="" TID="24668"
EventName="Write" ProviderName="Microsoft-Windows-Kernel-File"
ByteOffset="102386" Irp="0xffffe00148e8c478" FileObject="0xffffe00146c"
FileKey="0xffffc0019d3f8140" IssuingThreadId="24668"
IOSize="7" IOFlags="0" ExtraFlags="0"/>
我怎樣才能得到FileName
說受此事件影響?
什麼是FileObject
或FileKey
?
我可以從FileObject
或FileKey
得到FileName
嗎?
看到這個鏈接約相同的情況下:http://bcl.codeplex.com/discussions/274260 – lsalamon
謝謝你@Isalamon。有用的鏈接,我從中得到的想法和問題的答案。我會分享答案。 –
也看到這一個:https://stackoverflow.com/a/26259197/47733 – lsalamon