WTL之thunk

move esp+4, this,

jmp fun

只不过先设置堆栈参数,然后跳转函数

esp+4即为函数一个参数

(esp+8为第二个参数,esp-4为第一个局部变量)


为什么要用thunk? this指针不是在窗口创建时作为extra data额外指定了吗?

引用网上的一段解释:这样一来就有个致命弱点,对窗口不能调用SetWindowLong(hWnd,GWL_USERDATA,数据),否则就会导致程序崩溃。幸好这个函数(特定这几个参数)是调用几率极低的,对于窗口,由于创建窗口都是调用窗口类的Create函数,不用手工注册WNDCLASS类,也就不会调用SetWindowLong函数。但是毕竟缺乏安全性,而且当一秒钟内处理的窗口消息很多时,这种查找速度也可能不够快。


你可能感兴趣的:(WTL之thunk)