DriverEntry.obj : error LNK2019: unresolved external symbol __RTC_CheckEsp referenced in function_DriverEntry@8 如果出现这种错误,点击DriverEntry.cpp的C++(编译器)选项,将“将Basic Runtime Checks”改成Default
_RTC_CheckEsp函数如下所示:_RTC_CheckEsp: 00475A60 jne esperror (475A63h) 00475A62 re...
call __RTC_CheckEsp 可以看到检查的代码非常简单直接,把ESP保存在ESI之中,当调用printf,平衡堆栈之后,检查esp和esi的是否一致,然后调用__RTC_CheckESP,__RTC_CheckESP代码也很简单: _RTC_CheckEsp: 00412730 jne esperror (412733h) 00412732 ret esperror: …… 00412744 call _RTC_Failure (411195h) ……...
可以看到,赋值的时候,VC编译器先将s的值放到cx寄存器中,然后调用_RTC_Check_2_to_1@4函数来检查是否有数据截断的问题,结果放在al中,最后将al放到ch之中。_RTC_Check_2_to_1@4顾名思义是检查2个byte的数据被转换成1个byte的数据(short是2个byte,char是一个byte),代码如下: _RTC_Check_2_to_1: 004119...