По разным причинам (вопрос о причинах не помогает мне), я бы хотел реализовать свой собственный расширенный mapill для Windows XP. У меня есть скелет dll, только несколько точек входа существуют для тестирования, но системная заглушка mapi (c: \ windows \ system32 \ mapi32.dll, я проверил, что она идентична mapistub.dll) не будет проходить через вызовы мой DLL, в то время как он успешно передает те же вызовы MSMA MS32.dll MS Outlook, (MAPIInitialize, MAPILoginEx два таких вызовов). Есть секретное рукопожатие между заглушкой и расширенным mapi dll, в котором заглушка проверяет, что «да, это расширенный mapi dll»: возможно, это наличие некоторых дополнительных точек входа, которые я еще не реализовал, может быть, это возвращаемое значение из некоторой функции , Я не знаю. Я попытался отследить пример написанного мною приложения, которое вызывает MAPIInitialize с STraceNT и ProcessMonitor, но это не показало ничего очевидного. Трассировка показала, что действительно заглушка загружает мою dll, но затем обнаруживает, что секретный соус явно отсутствует, и возвращает код ошибки вместо вызова функции моей dll. Что еще может потребоваться для вызова MAPIInitialize, чем наличие MAPIInitialize в таблице экспорта моей библиотеки DLL? GetProcAddress говорит, что это там.
То, что я хотел бы знать, - это как минимально расширить мой скелет расширенной mapill, чтобы тупик mapi dll проходил через расширенные вызовы mapi моей dll. Какой секретный соус? Я бы предпочел не тратить мучительную неделю на обратный инжиниринг поведения заглушки в msvc.