我正在编写一个通过ETW跟踪功能使用NT内核记录器的应用程序。它以实时模式消耗。它在我的Windows 7测试机上工作正常但在我的XP VM上我经常出现内存异常。
使用APIMonitor(令人惊奇的工具顺便说一句)我通过ProcessTrace()Win32 API调用本身跟踪了对NtAllocateVirtualMemory()的调用。它试图分配1GB的连续内存,如屏幕截图所示。
之前有没有遇到过这个?我无法想象为什么需要分配这么多内存。此外,由于调用发生在未记录的Win32 API函数(WmiMofEnumerateResourcesA())中的ProcessTrace()调用堆栈深处,似乎我真的无法影响它。有没有人遇到过这个?我很欣赏任何可能的解决方案。
我需要支持XP / 2003和32位版本我真的不能假设1GB的连续内存可用。实时处理也是一项要求。但是,任何使用文件支持的日志记录的解决方法都不会丢失我可以考虑丢失的事件,例如所以我会“实时”处理添加到.ETL文件中的新事件,如果可能的话。