我在調用FindNextUrlCacheEntry()
時遇到了ERROR_INSUFFICIENT_BUFFER
錯誤。然後我想使用放大的緩衝區再次檢索失敗的條目。但我發現當我調用FindNextUrlCacheEntry()
時,似乎我正在檢索失敗條目旁邊的那個。我有什麼方法可以返回來檢索剛剛失敗的條目的信息嗎?如果FindNextUrlCacheEntry()失敗,如何再次檢索失敗條目的信息?
回答
爲什麼它值得這似乎是在Vista中解決。
我也在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和cacheEntryInfo BufferSizeInitial參數設置等於檢索緩存條目所需的緩衝區大小(以字節爲單位)。在分配所需的大小(cacheEntryInfoBufferSizeInitial)後,我再次調用相同的WinInet API,期望它在此次成功檢索條目。但有時它會失敗。我發現即使具有所需的緩衝大小(僅由其確定),API仍會失敗,因爲它需要更多字節,然後再檢索它以前的內容。多數情況下,差異只有幾個字節,但我也看到差異幾乎是4到5倍的情況。
我也經歷過這個。我只是簡單地分配(再一次)返回的NEW大小,這似乎適用於後續調用FindNextUrlCacheEntry()`你有沒有想過爲什麼返回不同的大小? – 2014-01-13 16:34:27
- 1. 如果exec:java目標失敗,我該如何失敗Maven構建?
- 2. 如果json結果失敗,如何顯示錯誤信息?
- 3. 如果lt_dlopen失敗,如何獲取更多信息?
- 4. 爪哇 - 併發:的LinkedBlockingQueue,「再試一次,如果失敗」
- 5. 如果點檢查失敗,Flink管道是否會失敗?
- 6. 如果DoCmd.SendObject失敗?
- 7. 如果條件失敗,去別的
- 8. 如何配置MSTest以再次嘗試每次測試,如果失敗
- 9. DatagramSocket的Android上失敗, '再試一次'
- 10. php - 如果每次都失敗
- 11. Thymeleaf:如果消息解析器失敗
- 12. 如果任何字段的一條規則失敗,則驗證失敗
- 13. 如果條件失敗,則返回false
- 14. PHP如果多個條件失敗
- 15. 如何失敗
- 16. 「調用Web服務將失敗......」再次
- 17. 檢索聯繫人信息失敗例外
- 18. 如果首次發送失敗,何時再次嘗試數據上傳?
- 19. Python如果檢查失敗,則爲無
- 20. 構建失敗,消息「processF0F1DebugResources失敗」
- 21. 發送消息失敗失敗android
- 22. 如果ajaxform成功或失敗,顯示一條消息
- 23. 阿卡-HTTP如果失敗
- 24. python如果語句失敗
- 25. 可可 - 如果雙失敗?
- 26. 如果安裝失敗
- 27. 如果交易失敗
- 28. MySQL如果語句失敗
- 29. 如果聲明失敗
- 30. 「如果」,在OnCreate中失敗
我看到了同樣的問題,爲避免出現`ERROR_INSUFFICIENT_BUFFER`,我可以分配一個最大大小嗎? – Motti 2009-11-18 14:09:49