さまざまな理由で(理由を質問することは私には役に立ちません)、WindowsXP用に独自の拡張mapidllを実装したいと思います。スケルトンdllがあり、テスト用のエントリポイントがいくつかありますが、システムmapiスタブ(c:\ windows \ system32 \ mapi32.dll、mapistub.dllと同一であることを確認しました)は、私のdllは、同じ呼び出しをMS Outlookのmsmapi32.dllに問題なく渡します(MAPIInitialize、MAPILoginExはそのような呼び出しの2つです)。スタブと拡張mapidllの間には秘密のハンドシェイクがあり、スタブは「うん、それは拡張mapi dllです」とチェックします。おそらく、まだ実装していない追加のエントリポイントが存在するか、何らかの関数からの戻り値である可能性があります。 、 知らない。私' STraceNTとProcessMonitorを使用してMAPIInitializeを呼び出す、私が作成したサンプルアプリをトレースしようとしましたが、明らかなものは何も表示されませんでした。トレースは、スタブが実際にdllをロードすることを示していますが、シークレットソースが明らかに欠落していることを検出し、dllの関数を呼び出す代わりにエラーコードを返します。MAPIInitializeを呼び出すには、dllのエクスポートテーブルにMAPIInitializeが存在すること以上に何が必要でしょうか?GetProcAddressはそれがそこにあると言います。MAPIInitializeを呼び出すには、dllのエクスポートテーブルにMAPIInitializeが存在すること以上に何が必要でしょうか?GetProcAddressはそれがそこにあると言います。MAPIInitializeを呼び出すには、dllのエクスポートテーブルにMAPIInitializeが存在すること以上に何が必要でしょうか?GetProcAddressはそれがそこにあると言います。
私が知りたいのは、スケルトンの拡張mapi dllを最小限に拡張して、スタブmapidllが私のdllへの拡張mapi呼び出しを通過するようにする方法です。秘伝のタレは何ですか?スタブの動作をmsvcリバースエンジニアリングするのに苦痛な1週間を費やしたくありません。