3

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

4

2 回答 2

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 倍的情况。

于 2011-01-07T19:26:44.250 回答
0

对于它的价值,这似乎在 Vista 中得到了解决。

于 2009-11-18T15:20:51.167 回答