Re: [問題] 確定fwrite有寫入到USB外接硬碟
read write那邊是筆誤.......
不過又試了一下,如果用安全地移除硬體再拔除USB是可以正確寫入的
我這裡的拔除就是真的把USB拔掉不是任何其他的移除方式..........
這裡的要求是使用者在檔案複製完成後可以直接拔除USB..........
不過又不行我直接用API去移除(搞不好使用者不想移除 囧)
所以我是想說判斷USB是否還在讀寫來決定是否複製檔案完成
不過找不到怎麼做啊 囧
WM_DEVICECHANGE好像沒這種message(也可能是我英文理解力太差....)
或是有什麼其他的方式可以判斷USB是否在讀寫中嗎?
補充一下 我把write的大小改成read到的大小一樣寫入不完全
: : 補充說明(Supplement):
: : 這個程式是要指定寫入USB隨身碟或隨身硬碟的
: : 以同樣達到300MB的檔案來說
: : 寫入速度比較慢得USB隨身碟可以完整寫入
: : 但是寫入速度比較快的隨身硬碟則無法完整寫入
: : 操作過程其實是在複製完以後就會拔除隨身碟
: : 但是立即拔除會發生寫入不完整,等個數十秒則可以完整寫入
: 你有試過等個二、三分鐘後,就會完整寫入嗎?
: 如果試過 waiting,且可以完整寫入話,下面的廢話就不用看了。
: 我認為不怎麼可能發生這情形,在 Windows 作業系統裡面,
: 用較柔性方式移除 USB (如右下角的硬體移除方式),
: 在該 disk 還有檔案進行讀寫時,應不可能移除成功的。
: 只要確定不是以硬體方式 (如以程式語言控制 USB power) 控制 on/off,
: 結果應不致於到不可預測。
: : 有找過一些資料說因為fwrite是會先寫到buffer
: : 不過有試過fflush依舊無法正常寫入
: : 用setvbuff設定不使用buffer也無法正常寫入
: : 另外還有看到要同步的fsync fdatasync則沒有例子可以參考
: : 不知道實際上要怎麼用
: : 有辦法在fwrite執行完以後就確實寫入硬碟的方式嗎?
: 若真有這問題存在,我會追的應是用了什麼 API 去移除裝置,
: 還有那隻 API 有沒有 return value 。
: (因基本假設是在於,還在寫的話是不會移除成功的)
: 若是 MFC / Win32 的話還蠻好解決的,
: http://msdn.microsoft.com/en-us/library/windows/desktop/
: aa363480%28v=vs.85%29.aspx
: http://msdn.microsoft.com/en-us/library/windows/desktop/
: aa363215%28v=vs.85%29.aspx
: 這兩篇看完應該就差不多了,一點小意見,參考。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.121.117
※ 編輯: CRAZYFAN 來自: 60.250.121.117 (11/04 12:00)
→
11/04 15:13, , 1F
11/04 15:13, 1F
→
11/04 22:15, , 2F
11/04 22:15, 2F
→
11/04 23:42, , 3F
11/04 23:42, 3F
→
11/04 23:43, , 4F
11/04 23:43, 4F
→
11/04 23:43, , 5F
11/04 23:43, 5F
→
11/04 23:44, , 6F
11/04 23:44, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):