21 #include"../../RegistryKey.hpp"
22 #include"../SharedMemory.hpp"
23 #include"../../EventLog.hpp"
84 inline bool operator<(
const PerfCtrDetails &pcd)
const {
return details<pcd.details || (details==pcd.details && (flags<pcd.flags || (flags==pcd.flags && size<pcd.size)));}
85 inline operator std::string (
void)
const {
std::stringstream ss;ss << (std::string)details <<
", flags:" << flags <<
", size:"<< size <<
" bytes";
return ss.str();};
94 inline operator std::string (
void)
const {
std::stringstream ss;ss <<
"Performance Object:" <<
std::endl << (
std::string)
object <<
std::endl;
for (std::set< PerfCtrDetails >::const_iterator i(counters.begin());i!=counters.end();++i) {ss <<
"Counter details: " << (std::string)*i << std::endl;};
return ss.str();};
105 typedef std::basic_string
108 std::char_traits<
char >,
154 class TempPerfINIFile {
156 inline TempPerfINIFile(
const std::string &obj_prefix,
const std::pair<
std::string,
std::string > &lang_details,
const PerfObjectDetails &perf_obj_details);
157 inline ~TempPerfINIFile(
void);
159 inline const std::string &name(
void)
const noexcept(
true);
160 static inline std::string make_driver_name(
const std::string &);
163 class TempSymbolFile {
165 inline TempSymbolFile(
const std::string &obj_prefix,
const std::vector< std::string >::size_type size);
166 inline ~TempSymbolFile(
void);
168 inline const std::string &name(
void)
const noexcept(
true);
169 inline const std::vector< std::string > &names(
void)
const noexcept(
true);
172 temp_file<std::fstream<
char> > symbol;
173 std::vector< std::string > object_names;
176 inline TempSymbolFile(
const TempSymbolFile &)
noexcept(
true);
177 inline TempSymbolFile &operator=(
const TempSymbolFile &)
noexcept(
true);
180 temp_file<std::fstream<
char> > ini;
181 TempSymbolFile symbol;
184 inline TempPerfINIFile &operator=(
const TempPerfINIFile &)
noexcept(
true);
188 const std::string driver_name;
189 const std::set< PerfObjectDetails::PerfCtrDetails >::size_type
num_ctrs;
190 RegistryKey perf_key, perf_perf_key, perf_link_key;
199 PERF_OBJECT_TYPE object_type;
200 PERF_COUNTER_DEFINITION *ctr_defs;
201 } perf_objects_details_type;
202 perf_objects_details_type *perf_objects_details;
205 PERF_COUNTER_BLOCK ctr_block;
207 } perf_ctrs_details_type;
208 perf_ctrs_details_type *perf_ctrs_details;