0
我有.NET程序集調用來自C(不支持CLR)的非託管DLL的函數。有沒有辦法讓非託管DLL可以確定哪個程序集調用了他們的代碼?我正在尋找方式,而不在非託管DLL中啓用CLR支持。確定哪個.NET程序集調用非託管代碼
我有.NET程序集調用來自C(不支持CLR)的非託管DLL的函數。有沒有辦法讓非託管DLL可以確定哪個程序集調用了他們的代碼?我正在尋找方式,而不在非託管DLL中啓用CLR支持。確定哪個.NET程序集調用非託管代碼
不,您無法安全地在本機代碼中執行堆棧。這隻能在託管代碼中實現,它提供了堆棧框架佈局保證。由垃圾收集器和CAS檢查所需。 C編譯器有優化器來移除這些保證。他們可以因爲語言不支持,也不需要棧道。
即使您對優化器進行了優化,您仍然會遇到嚴重的障礙,無法遍歷編譯器的堆棧幀,並將剛剛生成的機器代碼的猜測地址映射到程序集。只有CLR知道如何做到這一點。你無法完成這項工作。
謝謝......這是非常進攻的。 – 2013-02-13 18:25:12