Win32API質問箱 Build47
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/13(月) 08:56:12やさしいお兄さんやお姉さんたちが答えてくれるかも。
過去スレ、関連リンクは>>2-5くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
0643デフォルトの名無しさん
2006/12/03(日) 23:52:05日本語でおk
とりあえず、セクタサイズは通常512byte、MOとかDVD-RAMとかで2KBの場合あり。
4KBなんてものは普通はないが。
0644642
2006/12/04(月) 00:07:29すみません
セクタサイズではなくクラスタサイズでした
MSDNには、FILE_FLAG_NO_BUFFERINGフラグを指定した場合
書き込み&読み込みサイズと、バッファーのアドレスと、ファイルの書き込み&読み込み開始位置が
ディスクのクラスタサイズと一致してなければいけないと書いてありました。
そのため、クラスタサイズが4KBのディスクに1001KBのファイルを作ろうとすると
最後の1KBが書き込めなくなってしまうので
1、FILE_FLAG_NO_BUFFERINGを諦める
(このフラグを指定すると非同期書き込みのパフォーマンスが上がると書いてあったので、できれば諦めたくない)
2、一度ファイルを開き直してから書き込む
(わざわざ開き直すのは面倒でスマートではない気がするので、他にいい方法があるなら避けたい)
この二つ以外に方法は無いのかと思って質問させていただきました
0645デフォルトの名無しさん
2006/12/04(月) 00:07:500646tsurarete yarou.
2006/12/04(月) 00:15:50やったことないのでおおはずしかもしれないが、ダミーで埋めて 1004KB まで
書き込んでから、SetFilePointer() と SetEndOfFile() で余分なところを切
り捨てるんじゃだめ?
0647デフォルトの名無しさん
2006/12/04(月) 00:19:07セクタサイズ単位のはずだが。
0648デフォルトの名無しさん
2006/12/04(月) 00:21:180649デフォルトの名無しさん
2006/12/04(月) 00:28:13ちなみに、大抵の場合パフォーマンスが低下するので使用はお勧めしない。
■ このスレッドは過去ログ倉庫に格納されています