[問題] WriteFile() +FILE_FLAG_NO_BUFFERING
平台 windows
問題:
WriteFile 使用 FILE_FLAG_NO_BUFFERING flag,
依據MSDN說明 buffer必須對齊 sector size的倍數(512 bytes)
沒有對齊的話 會收到 invalid parameter的error.
經過test WriteFile buffer 長度不是 512的倍數會報錯
(GetLastError() return ERROR_INVALID_PARAMETER )
so 這樣就發生一個很有趣的狀況
我用 no buffer的方式 write file, 可以連續寫一大堆 512bytes倍數的buffer
卻發現最後一哩 寫不進去 (不是512的倍數)
雖然有繞路解法 我可以 先把write file handler關掉
然後再開一次檔 但是不下 no buffer的flag.
把最後一哩 buffer 給 WriteFile
但是 這樣的API的"成對"使用 實在頗怪異...
請問 有版友 有任何方式 可以不要開關檔兩次
就可以用 no buffer的方式寫檔嗎?
Thx~
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.120.67
→
12/16 09:58, , 1F
12/16 09:58, 1F
→
12/16 10:01, , 2F
12/16 10:01, 2F
→
12/16 10:04, , 3F
12/16 10:04, 3F
→
12/17 01:54, , 4F
12/17 01:54, 4F
→
12/17 01:54, , 5F
12/17 01:54, 5F
→
12/17 01:55, , 6F
12/17 01:55, 6F
→
12/17 01:55, , 7F
12/17 01:55, 7F
→
12/17 02:02, , 8F
12/17 02:02, 8F
→
12/17 02:02, , 9F
12/17 02:02, 9F