iPhoneのファイル読み込みで、IStream::Release に時間がかかる
Posted: 2012年11月09日(金) 15:53
いつもお世話になります。
環境:Windows7 64bit VC2010
早速ですが、iPhone(iOS)からファイル(画像)を読み取るプログラムを作成してます。
ファイルの読み込みには、IShellFolderなどのShell関連APIを使用しています。
そこで、タイトルの問題が発生するのですが、
IShellFolder::BindToObjectで対象ファイルのIStreamを取得し、
IStream::StatやIStream::Readといった操作を行うと、
IStream::Releaseに、およそ300~400ミリ秒の時間がかかってしまいます。
Cドライブ等の通常のファイルは、問題ありません。
iPhoneとiPodで現象が発生することを確認しています。
IStream取得後、なにもせずにReleaseした場合は、即時完了します。
また、IStream::Readでファイルの最後まで読み取った後であれば、
Releaseに時間がかかりません。即完了します。
Windows Vista、7で、本現象を確認しています。
XPでは現象がおきませんでした。
今回作成中のプログラムは、EXIF等のファイル情報のみを素早く取得したい為、
このReleaseの待ち時間がボトルネックとなっております。
原因と回避策をご存じの方はおりませんでしょうか。
解決の切っ掛けとなりそうな事であれば、なんでもかまいませんので、ご助言をお願いします。
環境:Windows7 64bit VC2010
早速ですが、iPhone(iOS)からファイル(画像)を読み取るプログラムを作成してます。
ファイルの読み込みには、IShellFolderなどのShell関連APIを使用しています。
そこで、タイトルの問題が発生するのですが、
IShellFolder::BindToObjectで対象ファイルのIStreamを取得し、
IStream::StatやIStream::Readといった操作を行うと、
IStream::Releaseに、およそ300~400ミリ秒の時間がかかってしまいます。
Cドライブ等の通常のファイルは、問題ありません。
iPhoneとiPodで現象が発生することを確認しています。
IStream取得後、なにもせずにReleaseした場合は、即時完了します。
また、IStream::Readでファイルの最後まで読み取った後であれば、
Releaseに時間がかかりません。即完了します。
Windows Vista、7で、本現象を確認しています。
XPでは現象がおきませんでした。
今回作成中のプログラムは、EXIF等のファイル情報のみを素早く取得したい為、
このReleaseの待ち時間がボトルネックとなっております。
原因と回避策をご存じの方はおりませんでしょうか。
解決の切っ掛けとなりそうな事であれば、なんでもかまいませんので、ご助言をお願いします。