首页 > 解决方案 > 使用 microsoft 的 krabsetw 实用程序解析 ETW 中的结构化类型

问题描述

因此,我一直在研究微软krabsetw关于如何处理和解析 ETW 事件的示例。他们的示例展示了关于顶级字段的简单用法,但是当涉及数组和复杂结构时会发生什么?

简单用法:multiple_providers_001.cpp:

 krabs::parser parser(schema);
            auto url = parser.parse<std::string>(L"URL");
            auto request_headers = parser.parse<std::string>(L"RequestHeaders");
            auto response_headers = parser.parse<std::string>(L"ResponseHeaders");
            std::cout << "\tURL: " << url << std::endl;
            std::cout << "\t\tRequest Headers: " << request_headers << std::endl;
            std::cout << "\t\tResponse Headers: " << response_headers << std::endl;

接口减速:

template <typename T>
bool try_parse(const std::wstring &name, T &out);

/**
 * <summary>
 * Attempts to parse the given property by name and type. If the
 * property does not exist, an exception is thrown.
 * </summary>
 */
template <typename T>
T parse(const std::wstring &name);

template <typename Adapter>
auto view_of(const std::wstring &name, Adapter &adapter) -> collection_view<typename Adapter::const_iterator>;

总而言之,在我被要求提供以下值的情况下:A\B\C\Struct\Array这种操作甚至可以用他们的 API 进行吗?还是我应该将所有内容都转换为 JSON 和朋友并从那里提取它?

标签: c++winapietw

解决方案


推荐阅读