CreateFile()函數用以打開和創建文件,函數原型聲明如下:
1 HANDLE WINAPI CreateFile(2 __in LPCTSTR lpFileName,3 __in DWORD dwDesiredAccess,4 __in DWORD dwShareMode,5 __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,6 __in DWORD dwCreationDisposition,7 __in DWORD dwFlagsAndAttributes,8 __in_opt HANDLE hTemplateFile9 );
在 Windows 中,創建和打開文件的 API 都是 CreateFile() 函數,并通過指定不同的參數來表示是創建一個文件,打開已存在的文件,還是重新建立文件等。
第 1 個參數lpFileName是個輸入參數,表示操作的對象文件的相對路徑或絕對路徑。
第 2 個參數 dwDesiredAccess 是個輸入參數,指名對文件對象的操作存取方式,比如是 GENERIC_READ(讀文件),GENERIC_WRITE(寫文件) 。
第 3 個參數dwShareMode是個輸入參數,表示共享模式。指名與其他進程是否共享該文件,可以是共享讀(FILE_SHARE_READ),共享寫(FILE_SHARE_WRITE),共享刪除(FILE_SHARE_DELETE)。如果指名多個屬性,那么可用 "|" 將幾個屬性做或運算。如果本進程需要獨占本文件,那么就將該參數設置為 0 。
第 4 個參數lpSecurityAttributes是一個指向 SECURITY_ATTRIBUTES 結構的指針,表示本文件句柄的安全屬性,能影響其是否可被子進程繼承等操作。如果設為 NULL,則子進程不能繼承本句柄。該結構并不常用。
第 5 個參數dwCreationDisposition是個輸入參數,表示操作模式。
第 6 個參數dwFlagsAndAttributes是個輸入參數,是文件屬性和文件標志。
第 7 個參數hTemplateFile是個輸入參數,當存取權限包括 GENERIC_WRITE 時,可以設置為一個模板文件的句柄,一般情況下該參數可設為 NULL ,表示不使用模板文件。
函數的參數選項眾多,下面主要列出比較重要且常用的幾個進行說明。
dwShareMode
0-- 文件不能共享,且本進程不能在這個文件上打開第 2 個 HANDLE 。
FILE_SHARE_READ-- 其他進程,包括進行本調用進程,可以打開這個文件并進行并發訪問。
FILE_SHARE_WRITE-- 允許并發寫文件。
lpSecurityAttributes
該參數指向一個 LPSECURITY_ATTRIBUTES 結構,一般使用中可置為 NULL 。
dwCreationDisposition
該參數指定是否創建文件,覆蓋現有文件等。選項有以下幾個:
1. CREATE_NEW
創建新文件,如果指定的文件已經存在那么失敗。
2. CREATE_ALWAYS
創建新文件,如果文件存在則重建該文件,清楚文件內容及文件屬性;如果文件不存在,則創建一個個新文件。
3. OPEN_EXISTING
打開現有文件,如果文件不存在則失敗。
4. OPEN_ALWAYS
如果文件存在,則打開文件;如果不存在,則創建它,此時等同于 CREATE_NEW。
5. TRUNCATE_EXISTING
將文件長度置為 0.使用該選項時,必須至少指定 GENERIC_WRITE 訪問權限,如果文件不存在時則失敗,對于已經存在的文件,則該文件的內容會被全部銷毀。
dwFlagsAndAttributes
該參數指定文件的屬性和長度,一共有 32 個標志和屬性。屬性是文件的特征,且與打開的文件句柄形成對照,如果打開的是現有文件,那么這些標志將被忽略。以下幾個是比較常見且重要的屬性和標志值。
1. FILE_ATTRIBUTE_NORMAL
該屬性只可在不設置其他屬性(可以設置標志)時才能使用。
2. FILE_ATTRIBUTE_READONLY
只讀文件,應用程序不能寫也不能刪除文件。
3. FILE_ATTRIBUTE_ARCHIVE
存檔文件
4. FILE_ATTRIBUTE_ENCRYPTED
加密文件
5. FILE_ATTRIBUTE_HIDDEN
隱藏文件
6. FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
沒有使用內容索引服務
7. FILE_ATTRIBUTE_OFFLINE
離線存儲文件
8. FILE_ATTRIBUTE_SYSTEM
系統文件
9. FILE_ATTRIBUTE_TEMPORARY
臨時文件
dwFlagsAndAttributes
1.FILE_FLAG_DELETE_ON_CLOSE
對臨時文件有用,當最后一個打開的句柄被關閉時,Windows 會刪除這個文件。
2.FILE_FLAG_OVERLAPPED
以異步 I/O 方式創建可打開文件,這個屬性標志對異步 I/O 比較重要。
3.FILE_FLAG_RANDOM_ACCESS
設置該屬性標志時,在程序對文件進行隨機訪問時,Windows 會嘗試優化文件緩存。
4.FILE_FLAG_SEQUENTIAL_SCAN
該屬性標志表示文件用于順序訪問,Windows 將相應的優化緩存。
5.FILE_FLAG_BACKUP_semANTICS
打開和創建文件是為了進行備份和恢復操作。
6.FILE_FLAG_NO_BUFFERING
不使用系統緩存(cahing,不同于硬件緩存)
5.FILE_FLAG_NO_BUFFERING
不使用系統緩存(cahing,不同于硬件緩存)
7.FILE_FLAG_NO_RECALL
遠程存儲
8.FILE_FLAG_WRITE_THROUGH
存取文件時,對磁盤進行直接操作,不經過緩存
9.FILE_FLAG_POSIX_SEMANTICS
按照 POSIX 規則存取
10.FILE_FLAG_OPEN_REPARSE_POINT
系統將禁止 NTFS 文件系統的“再解析”行為
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
cdp化妝品是什么牌子?CDP化妝品的全稱是cle de peau beauty,也可以稱為CPB。中文翻譯是肌膚的關鍵,屬于資生堂頂級品牌。1997年正式上市,2001年進入中國市場。品牌在全球20多個國家和地區設立了300多個形象專柜。CPB系列產品為各類肌膚提供最基本的護理產品,同時也為個別肌膚提供特殊護理產品,讓肌膚展現自然優雅的美。CDP是什么意思?日內反向操作技術指標,又稱逆勢操作指數...
699美元換成人民幣多少?當前美元對人民幣的匯率是1美元=7.0942人民幣1人民幣=0.141美元699美元=4958.8458人民幣參考2019年4月21日的匯率,699美元=4685.5368人民幣;溫馨提示:匯率波動699美元合計人民幣多少?]首先,699是iPhone8的價格,對應中國銀行5888的價格。X是999美元,相當于8388元。關稅10%,增值稅17%。699*6.54*1.1...
9mt柴油發動機性能怎么樣?發動機本身“超級動力”、“完美省油”、“完美聲音調節”、“非常非常穩定”四大特點??癖┰诜置胫g,省油在毫厘之中。9MT發動機原型為雷諾YS23DDT,是雷諾集團面向聯盟全球車型的第2代重型柴油動力,從產品性能、開發質量、零部件質量、能制造質量詳細不能執行雷諾日產聯盟標準。越級動力,如此一來頂級工程師的親自炒調校,9MT最大功率達120kW(應該是162馬力),最高扭矩...