由于各种原因(质疑原因对我没有帮助),我想为windows xp实现我自己的扩展mapi dll。我现在有一个框架 dll,只有几个入口点用于测试,但是系统 mapi 存根(c:\windows\system32\mapi32.dll,我已经检查它与 mapistub.dll 相同)不会通过调用我的 dll,虽然它很高兴地将相同的调用传递给 MS Outlook 的 msmapi32.dll,(MAPIInitialize、MAPILoginEx 是两个这样的调用)。在存根和扩展的 mapi dll 之间有一些秘密握手,其中存根检查“是的,它是一个扩展的 mapi dll”:也许是我还没有实现的一些额外入口点的存在,也许是某个函数的返回值, 我不知道。一世' 我尝试跟踪我编写的一个示例应用程序,该应用程序使用 STraceNT 和 ProcessMonitor 调用 MAPIInitialize,但这并没有显示任何明显的内容。跟踪表明,存根确实加载了我的 dll,但随后发现秘密酱明显丢失,并返回错误代码而不是调用我的 dll 的函数。除了在我的 dll 的导出表中存在 MAPIInitialize 之外,调用 MAPIInitialize 还需要什么?GetProcAddress 说它在那里。除了在我的 dll 的导出表中存在 MAPIInitialize 之外,调用 MAPIInitialize 还需要什么?GetProcAddress 说它在那里。除了在我的 dll 的导出表中存在 MAPIInitialize 之外,调用 MAPIInitialize 还需要什么?GetProcAddress 说它在那里。
我想知道的是如何最小化扩展我的骨架扩展 mapi dll,以便存根 mapi dll 将通过扩展 mapi 调用传递给我的 dll。秘方是什么?我宁愿不要在 msvc 对存根行为进行逆向工程上度过痛苦的一周。