有没有人知道使用普通的非托管Visual C++创建自定义性能计数器的方法?
我知道可以使用托管C++轻松完成,但我需要使用非托管Windows服务.
我也知道您可以检索性能计数器数据,但我需要创建一些自定义计数器并在应用程序运行时期间递增它们.
请参见此处:http: //msdn.microsoft.com/en-us/library/aa371925.aspx
这并不是很难,但有点单调乏味,因为API涉及广泛使用自引用的可变长度结构,并且必须使用一些IPC机制来从被监视的进程获取数据.
在Vista及更高版本中,对添加C++性能计数器的支持发生了变化.在另一个答案中建议的性能DLL方法仍然有效,但这里描述的新技术更容易使用.
在这种方法中,您编写了一个描述您的计数器的清单,运行CTRPP,一个从清单生成代码的工具.编译并将此代码与您的应用程序链接,并添加一个调用来初始化该进程(它启动一个后台线程),并添加代码以根据需要更新计数器.发布计数器的详细信息由运行生成的代码的后台线程处理.
您还需要运行lodctr/m:[manifest file]来注册您的计数器,然后才能使用它们.这必须以管理员身份运行.
BTW:另一个程序,unlodctr反转lodctr的效果,如果你对你的计数器进行任何更改必须使用,因为没有"替换"操作,只删除旧的,然后安装新的.