Windows 10 で ISequentialStream インターフェースからファイルを操作する際のパフォーマンスについて

こんにちは、Platform SDK (Windows SDK) サポートチームです。
今回は、Windows 10 における ISequentialStream インターフェースの動作についてご案内いたします。

 

現象
Windows 10 では以前のバージョンの Windows と比べて ISequentialStream インターフェースからファイルを操作する際の処理時間が長くなる場合があります。

 

これは Windows 10 で導入された UWP に対応するため ISequentialStream の内部実装に変更が加えられたことにより、 内部的なメソッド呼び出しのオーバーヘッドが増加したことに起因します。
例えば SHCreateStreamOnFileEx 関数で開いたファイルを Read メソッドで読み出す場合が該当します。特に繰り返し何度も呼び出すようなケースでは、前述のオーバーヘッドの影響を大きく受けます。

 

パフォーマンスを重視される場合は、メソッドを呼び出す回数が少なくなるようにアプリケーションの実装を変更するか、 ReadFile 関数や SetFilePointer 関数を直接利用する方法をご検討ください。