1、檔案的建立和開啟
handle createfile(
lpctstr lpfilename,
dword dwdesiredaccess,
dword dwsharemode,
lpsecurity_attributes lpsecurityattributes,
dword dwcreationdisposition,
dword dwflagsandattributes,
handle htemplatefile
lpfilename:指定用於建立或開啟的物件的名稱;
dwdesiredaccess:指定物件的訪問方式,包括:
0 --指定物件可裝置查詢訪問;
generic_read --指定物件可讀訪問,可從檔案中讀取資料,並可移動檔案中的指標;
generic_write --指定物件可寫訪問,可向檔案中寫入資料,並可移動檔案中的指標;
dwsharemode:指定共享方式,包括:
file_share_delete
file_share_read
file_share_write
lpsecurityattributes:指向乙個security_attributes結構的指標,用來確定返回的控制代碼是否能夠被子程序所繼承;
dwcreationdisposition:指定如何建立檔案,包括:
create_new --建立乙個新檔案,如果檔案已存在,則函式呼叫失敗;
create_always --建立乙個新檔案,如果檔案已存在,清空該檔案現有屬性
open_existing --開啟檔案,如果檔案不存在,則函式呼叫失敗
open_always --如果檔案存在,則開啟檔案;如果檔案不存在,則建立乙個新檔案;
truncate_existing --開啟檔案,檔案開啟時被擷取使得其大小為0位元組,呼叫該函式必須用generic_write的訪問方式來開啟檔案;如果檔案不存在,則函式呼叫失敗;
dwflagsandattributes:設定檔案屬性和標誌,包括:
file_attribute_archive --該檔案是存檔檔案
file_attribute_hidden --該檔案是隱藏檔案
file_attribute_normal --該檔案沒有其他屬性設定
file_attribute_offline --檔案的資料已在物理上移動到離線儲存裝置中,不能立即使用
file_attribute_readonly --該檔案為唯讀檔案
file_attribute_system --該檔案是作業系統檔案
file_attribute_temporary --該檔案做暫時儲存使用
file_flag_write_through --指示系統不經過快取而直接將資料寫入磁碟
file_flag_no_buffering --指示系統以不帶系統緩衝的方式開啟該檔案
file_flag_random_access --指示該檔案是隨機訪問方式
file_flag_sequential_scan --指示該檔案是順序訪問方式
file_flag_backup_semantics --表明是為備份或儲存操作而開啟或建立該檔案的
file_flag_posix_semantics --表明將根據posix規則訪問該檔案
file_flag_open_reparse_point --指定此標誌禁止ntfs再分析點的再分析行為
file_flag_open_no_recall --表明雖然請求了該檔案的資料,但該資料仍繼續儲存在遠端儲存器中而不應被傳回本地儲存器
htemplatefile:如果開啟乙個已有檔案,則這個引數將被忽略;要使這個引數有效必須滿足:為建立新檔案,給該引數傳遞的檔案控制代碼必須是使用generic_read方式開啟的;
2、檔案的寫入
bool writefile(
handle hfile,
lpcvoid lpbuffer,
dword nnumberofbytestowrite,
lpdword lpnumberofbyteswritten,
hfile:指定要寫入資料的檔案的控制代碼
lpbuffer:指向包含將要寫入檔案的資料的緩衝區的指標
nnumberofbytestowrite:指明要向檔案中寫入的位元組數
lpnumberofbyteswritten:用來接收實際寫入到檔案中的位元組數
3、檔案的讀取
bool readfile(
handle hfile,
lpvoid lpbuffer,
dword nnumberofbytestoread,
lpdword lpnumberofbytesread,
hfile:指定要讀取其資料的檔案的控制代碼
lpbuffer:指向乙個緩衝區的指標,該緩衝區將接收從檔案中讀取的資料
nnumberofbytestoread:指定從檔案讀取的位元組數
lpnumberofbytesread:用來接收實際讀到的位元組數
例:
//定義乙個控制代碼變數handle hfile;
//建立檔案
hfile = createfile("1.txt", generic_write, 0, null, create_new, file_attribute_normal, null);
//接收實際寫入的位元組數
dword dwwrites;
//寫入資料
writefile(hfile, "hello world!", strlen("hello world!"), &dwwrites, null);
//關閉檔案控制代碼
closehandle(hfile);
handle hfile;//開啟檔案
hfile = createfile("1.txt", generic_read, 0, null, open_existing, file_attribute_normal, null);
//接收實際讀取到的資料
char ch[100];
//接收實際讀取到的位元組數
dword dwreads;
//讀取資料
readfile(hfile, ch, 100, &dwreads, null);
//設定字串結束字元
ch[dwreads] = 0;
//關閉開啟的檔案物件的控制代碼
closehandle(hfile);
//顯示讀取到的資料
messagebox(ch);
在C 中讀寫INI檔案 WIN32 API
dllimport kernel32 private static extern long getprivateprofilestring string section,string key,string def,stringbuilder retval,intsize,string filepat...
WIN32 API 檔案裝置IO操作函式解析
createfile用於建立,開啟乙個檔案或者i o裝置。常用的i o裝置包括 檔案,檔案流,目錄,物理磁碟,卷,控制台緩衝區,磁帶驅動器,通訊資源,郵槽和管道。根據所訪問物件以及所指定訪問特性標識的不同,該函式會返回乙個用於訪問所指定物件的控制代碼。其基本語法為 handle winapi cre...
win32 API實現檔案拖拽開啟
在windows中,我們開啟乙個文字檔案後,可以將另乙個文字檔案拖拽進來,從而實現開啟此檔案。那麼這個功能是怎麼實現的呢?經過一下午的實踐,現將具體 分享如下 include define id edit 1 lresult callback wndproc hwnd,uint,wparam,lpa...