如果FindNextUrlCacheEntry()失败,如何再次检索失败条目的信息?

时间:2009-06-19 10:08:58

标签: caching wininet

调用ERROR_INSUFFICIENT_BUFFER时出现FindNextUrlCacheEntry()错误。然后我想使用放大的缓冲区再次检索失败的条目。但我发现当我调用FindNextUrlCacheEntry()时,似乎我正在检索失败条目旁边的那个。有什么方法我可以回去检索刚刚失败的条目的信息吗?

2 个答案:

答案 0 :(得分:2)

我也在XP上观察到了相同的行为。我试图使用WinInet API以编程方式清除IE缓存。以下MSDN链接上的代码在Win7 / Vista上完全正常,但在XP上批量删除缓存文件(多次运行)。在调试时,我发现API FindNextUrlCacheEntry在多次执行时为同一条目提供了不同的大小。

MSDN链接:http://support.microsoft.com/kb/815718

这是我正在做的事情:

首先,我打电话确定下一个URL条目的大小

fSuccess = FindNextUrlCacheEntry(hCacheHandle,0,& cacheEntryInfoBufferSizeInitial)//此时cacheEntryInfoBufferSizeInitial = 0

上述调用返回false,错误号为INSUFFICIENT_BUFFER,cacheEntryInfoBufferSizeInitial参数设置等于检索缓存条目所需的缓冲区大小(以字节为单位)。在分配了所需的大小(cacheEntryInfoBufferSizeInitial)后,我再次调用相同的WinInet API,希望它能够成功检索此条目。但有时它会失败。我看到API再次失败的情况,即使具有所需的缓冲大小(仅由其确定),因为它需要更多的字节然后更早检索它。大多数情况下,差异是几个字节,但我也看到差异几乎是4到5倍的情况。

答案 1 :(得分:0)

对于它的价值,似乎可以在Vista中解决。