2009-06-19 16 views
3

FindNextUrlCacheEntry()を呼び出すときにERROR_INSUFFICIENT_BUFFERエラーが発生しました。次に、拡大したバッファを使用して、失敗したエントリを再度取得したいとします。しかし、FindNextUrlCacheEntry()を呼び出すと、失敗したエントリの横にあるものを取得していたようです。ちょうど失敗したエントリの情報を取得するために私が戻っていくことができるアプローチはありますか?FindNextUrlCacheEntry()が失敗した場合、失敗したエントリの情報を再度取得する方法はありますか?

+0

同じ問題が発生しています。「ERROR_INSUFFICIENT_BUFFER」を避けるために割り当てることができる最大サイズはありますか? – Motti

答えて

0

これは価値があるのは、Vistaで解決されるようです。

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上記の呼び出しがないINSUFFICIENT_BUFFERとして及びcacheEntryInfoとエラーでfalseを返すこの時点

でBufferSizeInitialパラメータは、キャッシュエントリを取得するために必要なバッファのサイズ(バイト単位)に等しく設定されます。必要なサイズ(cacheEntryInfoBufferSizeInitial)を割り当てた後、今度は同じWinInet APIを呼び出して、今度はエントリを正常に取得することを期待します。しかし時にはそれは失敗する。私は、より多くのバイトを期待していたため、以前に取得したものを期待しているため、必要なバッファサイズ(それだけで決まっている)であってもAPIが再び失敗するケースがあります。ほとんどの場合、その差は数バイトですが、差がほぼ4〜5倍の場合もあります。

+0

私もこれを経験しました。私は単に返されたNEWサイズを(再び)割り当てます。それは 'FindNextUrlCacheEntry()'へのその後の呼び出しのために働くようです。異なるサイズが返される理由を理解しましたか? –

関連する問題