Windows regsrv32 dllregisterserver输出

Windows regsrv32 dllregisterserver输出,windows,debugging,dll,logging,regsvr32,Windows,Debugging,Dll,Logging,Regsvr32,我们正在提供一个shell扩展dll(在regsvr32中注册)。 有没有一种简单的方法可以从另一个应用程序从这个dll中获取调试输出(这样我们可以在出现故障时将这些跟踪发送回家) 有什么想法吗?将日志数据从dll获取到另一个进程的最简单方法是什么?如果它是一个shell扩展dll,那么它不是作为登录用户运行的,因此不能写入磁盘上某个适当目录中的日志文件吗?如果是这样,为什么要将其写入另一个进程?您可以使用它来跟踪扩展DLL的执行。ETW在没有侦听器处于活动状态时几乎没有开销,因此在正常情况下,

我们正在提供一个shell扩展dll(在regsvr32中注册)。 有没有一种简单的方法可以从另一个应用程序从这个dll中获取调试输出(这样我们可以在出现故障时将这些跟踪发送回家)


有什么想法吗?将日志数据从dll获取到另一个进程的最简单方法是什么?

如果它是一个shell扩展dll,那么它不是作为登录用户运行的,因此不能写入磁盘上某个适当目录中的日志文件吗?如果是这样,为什么要将其写入另一个进程?

您可以使用它来跟踪扩展DLL的执行。ETW在没有侦听器处于活动状态时几乎没有开销,因此在正常情况下,您的DLL不会招致性能惩罚;同时,它允许在不同的细节层次上进行详细输出

ETW的工作方式是,当调用API时,它们检查是否有监听器订阅了来自特定发布者的跟踪,如果没有,则不会生成任何内容。如果存在侦听器,则只有该侦听器订阅的跟踪才会写入内存映射文件。因此,仅根据请求生成尽可能多的跟踪数据

ETW侦听器可以在任何时候激活,发布服务器无需重新启动。此外,ETW不受口味限制,可用于调试和零售。因此,如果您的客户有问题,您只需向他们发送有关如何运行和收集信息的说明;您不必向他们发送插入指令的二进制版本。您可以编写自己的应用程序作为侦听器,也可以使用标准和工具将跟踪写入文件

要在DLL中生成必要的ETW代码,可以使用而不是直接使用ETW API


注意:虽然我在这里发布的所有链接都指向Windows驱动程序工具包文档,但ETW和WPP可以(并且大量)用于常规用户模式程序。

同意ChrisW。将日志数据写入文本文件;如果需要,可以通过多种方式从用户处获取日志文件。出于性能原因,您不希望总是生成日志文件;仅当尝试重新处理特定问题时。例如,您可以拥有一个注册表项,shell扩展DLL将读取该注册表项,以查看您是否请求它启用日志记录。是的,有不同的方法控制日志记录。只是想指出日志不应该总是打开。ChriwW:re-user-mode ETW API:请参阅和。乍一看,它似乎不是一个“简单”或“最简单”的API。不,原始ETW API不是“最简单”的API。然而,WPP简化了很多事情。另一方面,我们在团队中使用WPP/ETW进行诊断跟踪和性能测量。