Windows XP URLDownloadToFile异常失败bug一例
奇葩的问题,某个URL IE无法下载,但是用其他下载工具却能下载,我倒不在乎其他下载工具咋下的……关键是URLDownloadToFile拉不到这个文件,各种失败,这个让我比较在意,看看原因是什么。
首先,这个问题是只在Windows XP,应该是没打补丁的XP3上有,至于打补丁的情况我也没验证了,跟urlmon有关。这个是报错信息:
(ce4.9d8): Unknown exception - code 80040155 (first chance)
(ce4.84c): Unknown exception - code 80040155 (first chance)
eax=80040155
这个结果由CFileDownload::KickOffDownload返回。这个值是E_IIDNOTREG,interface not registered。这是为什么呢……感觉如此奇怪。
URLDownloadToFile的工作模式是 :创建一个CFileDownload,然后调用CFileDownload::KickOffDownload,CFileDownload派生自CBaseBSCB,CBaseBSCB::KickOffDownload会:
1、创建一个URL Moniker(IMoniker);
2、获得IBindCtx接口;
3、RegisterBindStatusCallback注册CallBack
4、将Moniker与IStream绑定,此时开始下载
BindToStorage时出错,返回REGDB_E_IIDNOTREG,原因是CTransaction::Start会检查请求的MIME Type,但是服务器蛋疼的把MIME Type设置成了……
最后通知管理员解决了……
233333333