我在调用 FindNextUrlCacheEntry()
时遇到了 ERROR_INSUFFICIENT_BUFFER
错误。然后我想使用扩大的缓冲区再次检索失败的条目。但我发现,当我调用 FindNextUrlCacheEntry()
时,似乎我正在检索失败条目旁边的条目。有什么办法可以回溯到刚刚失败的条目的信息吗?
最佳答案
我也在 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 倍的情况。
关于caching - 如果 FindNextUrlCacheEntry() 失败,我如何重新检索失败条目的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1017251/