使用Windows API寫檔,回傳值成功但檔案寫入失敗的問題。 |
缺席
|
joseph_yu
一般會員 發表:3 回覆:2 積分:1 註冊:2011-07-22 發送簡訊給我 |
小弟我用CreateFile開啟(或建立)一個檔案,
開檔參數如下: hFile = CreateFile(fileName, // 檔名 GENERIC_WRITE|GENERIC_READ, // 讀寫文件 0, // 不共享讀寫 NULL, // 缺省安全屬性。 CREATE_ALWAYS, // 如果文件存在也建立 FILE_ATTRIBUTE_NORMAL, // 一般的文件 NULL); 而寫檔用WriteFile來寫入, 寫檔程式如下,有接回傳值: res = WriteFile(hFile,ENV_STR,sizeof(ENVIRONMENT),&dwFile,NULL); // 寫入檔案 我有對回傳值res做判斷,若為0(或false)時則失敗。 但近日發現,會有res不為0代表寫檔成功, 但實際上資料並沒有寫入檔案的問題。 請問各位大大,此異常是否有任何防範的方式呢? 編輯記錄
joseph_yu 重新編輯於 2012-09-20 00:15:56, 註解 無‧
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
1/ if (ENV_STR, sizeof(ENVIRONMENT) 是否可能有問題? 比如不會是null 或是 0 的情形嗎?
建議再三查一下。 ===================引 用 joseph_yu 文 章=================== 小弟我用CreateFile開啟(或建立)一個檔案, 開檔參數如下: hFile = CreateFile(fileName, // 檔名 GENERIC_WRITE|GENERIC_READ, // 讀寫文件 0, // 不共享讀寫 NULL, // 缺省安全屬性。 CREATE_ALWAYS, // 如果文件存在也建立 FILE_ATTRIBUTE_NORMAL, // 一般的文件 NULL); 而寫檔用WriteFile來寫入, 寫檔程式如下,有接回傳值: res = WriteFile(hFile,ENV_STR,sizeof(ENVIRONMENT),&dwFile,NULL); // 寫入檔案 我有對回傳值res做判斷,若為0(或false)時則失敗。 但近日發現,會有res不為0代表寫檔成功, 但實際上資料並沒有寫入檔案的問題。 請問各位大大,此異常是否有任何防範的方式呢?
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
|
joseph_yu
一般會員 發表:3 回覆:2 積分:1 註冊:2011-07-22 發送簡訊給我 |
|
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
XPE ????? WINCE ???? 寫到flash???? ===================引 用 joseph_yu 文 章=================== Dear aftcast大: 我會試試看您提供的方式。 其實此段寫檔程式碼, 是用在POS系統紀錄電子發票號碼上, 會發生此異常狀況的機率真的是萬分之一, 但這次異常有點像是檔案LOCK住, 雖然Windows API寫檔時都回傳正常, 但其實發票號碼是真的沒寫進檔案內, 導致隔日交易時同一個號碼重複使用了‧‧‧ Dear Coffee版主: 我也有用FlushFileBuffers的函式, 但是接回傳值也是正常內‧‧‧呵呵 |
RootKit
資深會員 發表:16 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |