Я также наблюдал такое же поведение на 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 раз.