现正做一异步插件协议(Asynchronous Pluggable Protocol),现在有一个问题未能解决,如果有哪位高手乐意帮忙,愿付现金。问题描述:我继承了IInternetProtocol接口,实现了Read函数。我这里只监控图片(jpg,png),当遇到图片后,我在Read中读取一个缓冲后返回S_OK给IE,这样IE会继续调用该函数(Read),直到失败为止。我先把图片下载到内存中,然后生成一个同样大小的图片,再一块一块地把图片返回给IE。开始浏览时效果还很好,可是浏览几页后就会出现不能继续显示图片,一个死等待,最后会以超时结束。
我这里现在有一个问题还没找到是出在哪的。
我在我的Read函数中调用IE实现的IInternetProtocol对象的Read()时工作的非常好,但是我替IE来读取时就出现问题了,在百度的图片搜索中浏览到第8页就开始有不能读取图片的现象了。
代码如下:(希望你帮忙分析一下)
m_spProtocol:IE实现的IInternetProtocol接口的对象
STDMETHODIMP CFilter::Read(void *pv, ULONG cb, ULONG *pcbRead)
{
return m_spProtocol->Read(pv, cb, pcbRead);
}我自己来读取的代码:
STDMETHODIMP CFilter::Read(void *pv, ULONG cb, ULONG *pcbRead)
{
if (InternetReadFile(m_hHttpFile, pv, cb, pcbRead))
{
if (*pcbRead>0)
return S_OK;
else
return S_FALSE;
}
else
return S_FALSE;}