ディスクキャッシュを通さずにファイルを書き出すには?
- 題名: ディスクキャッシュを通さずにファイルを書き出すには?
- 著者: teno
- 日時: 2008/05/06 6:20:30
- ID: 21990
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: ディスクキャッシュを通さずにファイルを書き出すには?
- 著者: Azulean
- 日時: 2008/05/06 13:17:23
- ID: 21992
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: ディスクキャッシュを通さずにファイルを書き出すには?
- 著者: teno
- 日時: 2008/05/10 0:44:56
- ID: 22011
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: ディスクキャッシュを通さずにファイルを書き出すには?
- 著者: Azulean
- 日時: 2008/05/10 1:44:49
- ID: 22012
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: ディスクキャッシュを通さずにファイルを書き出すには?
- 著者: Azulean
- 日時: 2008/05/11 13:28:49
- ID: 22015
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: ディスクキャッシュを通さずにファイルを書き出すには?
- 著者: teno
- 日時: 2008/05/18 8:14:38
- ID: 22070
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
どうしても自己解決できず、
こちらに書き込まさせていただきました。
FileStreamでファイルを書き出そうとした場合、
ディスクキャッシュを通さない方法は見つかりませんでした。
これができれば一番よいのですが・・・
最初はFileStream.Flushで書き出せそうな気もしたのですが、
あくまでバッファしていたものを直ちに書き出すというだけで、
そのうしろのディスクキャッシュまでは制御できないようです。
しかも、よくよく調べてみると、FileStream.Closeしたときにも
自動でFlushされているらしく、あまり意味がないようです。
そこで、ほかの方法を探したところ、WindowsのAPIで、
CreateFileで開き、WriteFileで書き出す際に、
CreateFileの時点で「FILE_FLAG_WRITE_THROUGH」を指定すると、
ディスクキャッシュを通さず書き出せるという情報を見つけました。
しかし私、APIに関しては初心者でして、(VBもそんなに自信は・・・)
たまにAPIを使ったとしても、どこかのサイトをコピペする程度です。
http://support.microsoft.com/kb/165942/ja
ここのように、CreateFileとWriteFileの使い方のサンプルは
いくつか見つけたのですが、どれもおそらくVB6用で、
VB.NET 2002ではどうすれば使えるのかまったくわかりません。
ためしにコピペ、エラーが出ている部分は適当に修正、実行してみましたが、
fSuccess = WriteFile(fHandle, anArray(LBound(anArray)), _
BytesToWrite, lBytesWritten, 0)
この部分で、
「オブジェクト参照がオブジェクトインスタンスに設定されていません。」
と出てしまい、ハンドルは指定してありますし、エラーの原因が不明です。
どなたかご教授お願いできますでしょうか。
多少贅沢かもしれませんが、VB.NET 2002用へ修正後のソースなども
一緒にご提示いただけたりすると、とてもうれしいです。
よろしくお願いします。