如何使用Windows etw跟踪确定IO操作中涉及的文件名?

问题描述 投票:1回答:1

我正在尝试在vc++中创建使用者应用程序,它将使用etw跟踪实时收集所有磁盘事件。

我启用了两个标志EVENT_TRACE_FLAG_DISK_FILE_IOEVENT_TRACE_FLAG_DISK_IO进行跟踪,但是问题是,与DiskIo_TypeGroup1事件的数量相比,我没有得到那么多的FileIO_Name事件。

但是如果我仅启用EVENT_TRACE_FLAG_DISK_FILE_IO标志,那么我的回调函数中将收到更多的FileIO_Name事件。

FLAG                                          EVENT

EVENT_TRACE_FLAG_DISK_IO                      Enables the following DiskIo event types:
0x00000100                                     DiskIo_TypeGroup1
                                               DiskIo_TypeGroup3

EVENT_TRACE_FLAG_DISK_FILE_IO                 Enables the following FileIo event type:
0x00000200                                    FileIo_Name

我想我需要两个标志,因为...从FileIO_Name事件中,我将获得FileObjectFileName数据,从DiskIO_TypeGroup1中,我将获得FileObject,DiskNumber,TransferSize和其他数据,我需要匹配公共fileobjects以合并两个单独的数据集并获得所需的输出。

所以当我同时使用两个标志时,我得到的DiskIO_TypeGroup1:FileObject比率为4:1。但是,当我在推特上发送代码以仅获取FileIO_Name事件时,我得到的事件是以前获得的事件的3倍,甚至更多。

我正在尝试在vc ++中创建一个使用者应用程序,它将使用etw跟踪实时收集所有磁盘事件。我启用了两个标志,EVENT_TRACE_FLAG_DISK_FILE_IO和...

windows visual-c++ etw
1个回答
0
投票

请将此代码提供给我参考。

© www.soinside.com 2019 - 2024. All rights reserved.