Если FindNextUrlCacheEntry () не удается, как я могу получить информацию о неудачной записи снова? - PullRequest
3 голосов
/ 19 июня 2009

Я получил ошибку ERROR_INSUFFICIENT_BUFFER при вызове FindNextUrlCacheEntry(). Затем я хочу снова получить неудачную запись, используя увеличенный буфер. Но я обнаружил, что когда я вызываю FindNextUrlCacheEntry(), кажется, что я получаю тот, который находится рядом с ошибочной записью. Есть ли какой-нибудь подход, к которому я могу вернуться, чтобы получить информацию только что ошибочной записи?

Ответы [ 2 ]

2 голосов
/ 07 января 2011

Я также наблюдал такое же поведение на XP. Я пытаюсь очистить кеш IE программно с помощью WinInet API. Код по следующей ссылке MSDN отлично работает на Win7 / Vista, но удаляет файлы кэша в пакетном режиме (несколько запусков) на XP. При отладке я обнаружил, что API FindNextUrlCacheEntry дает разные размеры для одной и той же записи при многократном выполнении.

MSDN Link: http://support.microsoft.com/kb/815718

Вот что я делаю:

Сначала я звоню, чтобы определить размер следующей записи URL

fSuccess = FindNextUrlCacheEntry (hCacheHandle, 0, & cacheEntryInfoBufferSizeInitial) // cacheEntryInfoBufferSizeInitial = 0 в этот момент

Вышеуказанный вызов возвращает false с ошибкой no в качестве INSUFFICIENT_BUFFER и с параметром cacheEntryInfoBufferSizeInitial, равным размеру буфера, необходимого для извлечения записи в кэше, в байтах. После выделения требуемого размера (cacheEntryInfoBufferSizeInitial) я снова вызываю тот же API-интерфейс WinInet, ожидая, что в этот раз он успешно получит запись. Но иногда это не удается. Я вижу, что случаи, когда API снова дает сбой, хотя и с требуемыми размерами в буфере (как определено только), потому что он ожидает больше байтов, чем то, что он извлек ранее. В большинстве случаев разница составляет несколько байтов, но я также видел случаи, когда разница была почти в 4-5 раз.

0 голосов
/ 18 ноября 2009

Похоже, это решается в Vista.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...