我目前正在研究一個DLL,這是一個封閉的工作項目的擴展。覆蓋CRT的執行_purecall
我想抓住每一個純粹的通話錯誤,所以我把它搜索起來,並發現了關於_purecall處理程序。我的問題是關於它的實現。幕後發生了什麼?編譯器本身需要我的處理程序函數地址(如果我定義了一個),並在它被類函數地址本身(初始化後)覆蓋之前將其默認值寫入v表中的每一行,或者它更復雜一些CRT和全局指針?
我在問這個,因爲我不希望我的插件DLL覆蓋整個應用程序_purecall處理程序,當然。我可以確定我的purecall處理程序只處理模塊中的純調用嗎?
謝謝!
除非您動態鏈接到CRT,在這種情況下,它可以在多個模塊之間共享。 – 2011-03-18 19:27:11
是的,你是對的。我混淆了多個模塊動態加載CRT以及動態加載不同版本CRT的情況。我會讚揚我的回答。 – 2011-03-18 19:47:01
謝謝!我解開了使用VC2010編譯的應用程序,它似乎只是簡單地替換純函數指針... – MindBlower 2011-03-19 06:06:41