我正在编写一个可用作 DLL 的跟踪库。它基本上被我系统中的每个组件所消耗。一个棘手的要求是跟踪函数需要在进程生命周期的早期调用,甚至在 main() 运行之前。
该库的使用者包括可执行文件、静态链接的 DLL、延迟加载的 DLL 和动态加载的 DLL。所有的变化。
一些跟踪功能在静态初始化中不能很好地发挥作用,但其他的很好。理想情况下,我希望能够在初始化期间为消费者提供最少的安全功能,然后在初始化完成后提供全部功能。
要求消费者自己进行明确的“我完成初始化”调用是行不通的,因为某些消费者本身就是 DLL,并且无法控制托管它们的可执行文件。同样的问题只是将链条上移一级。
我希望有某种方法可以让我询问运行时是否或我当前正在静态初始化中运行,或者该阶段是否已完成。这样的事情可能吗?
更复杂的是,我需要在 5 个平台上运行。我不需要一次写入的解决方案,但我确实需要让它在所有平台上以某种方式工作。