私は VB6 と Win32 API を使用してファイルにデータを書き込んでいます。この機能はデータのエクスポート用であるため、ディスクへの書き込みパフォーマンスが考慮事項の重要な要素です。そのため、 への呼び出しでファイルを開くときにFILE_FLAG_NO_BUFFERING
およびオプションを使用しています。FILE_FLAG_WRITE_THROUGH
CreateFile
FILE_FLAG_NO_BUFFERING
独自のバッファーを使用して、ディスクのセクター サイズの倍数でファイルにデータを書き込む必要があります。これは、セクター サイズの正確な倍数でない場合、文字が含まれるデータの最後の部分を除いて、通常は問題ありません。最後のブロックが書き込まれたら、これらの文字ゼロを含めないようにファイル サイズを設定するにはどうすればよいですか?
使用できますSetEndOfFile
が、これには、ファイルを閉じて、使用せずに再度開く必要がありますFILE_FLAG_NO_BUFFERING
。誰かが話しているのを見NtSetInformationFile
たことがありますが、VB6でこれを使用して宣言する方法が見つかりません。SetFileInformationByHandle
私がやりたいことを正確に行うことができますが、それは Windows Vista でのみ利用可能です。私のアプリケーションは、以前のバージョンの Windows と互換性がある必要があります。