当前位置: 代码迷 >> VC/MFC >> InternetSetStatusCallback的奇怪有关问题
  详细解决方案

InternetSetStatusCallback的奇怪有关问题

热度:149   发布时间:2016-05-02 03:50:44.0
InternetSetStatusCallback的奇怪问题
本帖最后由 oyljerry 于 2015-07-15 11:21:08 编辑
近日在开发IE插件时,遇到一个奇怪的问题,怎么调试都没有想到问题原因,问题现象:
通过hooking wininet.dll 在插件中使用InternetSetStatusCallback替换IE原来的回调函数,
//替换原来的函数
originalCallBack = InternetSetStatusCallbackW(hInternet, newCallBack)
//再还原回原来的函数
tt = InternetSetStatusCallbackW(hInternet, originalCallBack)


这时直接访问百度的https://www.baidu.com,IE可以正常使用
但访问http://www.baidu.com时,IE就频繁在刷新,页面始终打不开,请问各位是什么原因?
------解决思路----------------------
参考下 wininet 异步+多线程
------解决思路----------------------
通常情况下你对函数的处理不完整,或者返回值不正确,或者某些参数或者标志位的处理有遗漏
------解决思路----------------------
看是不是多线程问题造成的
既然hook了就不用恢复了啊?
在自己的的回调函数中 处理过后,最后调用IE的原回调函数,不恢复试试
------解决思路----------------------
WinAPIOverridehttp://jacquelin.potier.free.fr/winapioverride32/

------解决思路----------------------
http跟https你处理是不是有不同。页面返回等可能有区别
------解决思路----------------------
感觉复杂了,他内部实现有问题吗,只能调用一次InternetSetStatusCallbackW吗
试试直接hook InternetSetStatusCallbackW进行替换,不恢复,自己调用原回调
------解决思路----------------------
相关测试代码我发布在网盘上
http://pan.baidu.com/s/1dDGZSEd 密码:qujr 
------解决思路----------------------
估计和多线程有关。
  相关解决方案