在軟體的需求裡,把有用的資料儲存起來是非常重要的功能。比如每天的股票行情資料需要儲存起來,以便產生K線圖。比如遊戲用戶端的LOG需要儲存起,以便用戶端出錯時可以把LOG發送回來分析它出錯的原因。比如銀行每天進行交易時,也需要把所有交易的資料儲存到檔案備份起來,以便進行結算。還有在資料擷取領域更是需要儲存更多的資料,比如從DV裡讀取視頻和語音資料出來,就會產生12G的巨型檔案。比如讀DVD光碟片裡,把光碟片做成虛擬光碟機也有9G大小。因此,建立檔案是非常普通的功能,這個肯定是掌握,並且非常會使用的。當然這個CreateFile函數不但可以建立檔案,還可以打串口、並口、網路、USB裝置等功能。
函數CreateFile聲明如下:
WINBASEAPI
__out
HANDLE
WINAPI
CreateFileA(
__in LPCSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in_opt HANDLE hTemplateFile
);
WINBASEAPI
__out
HANDLE
WINAPI
CreateFileW(
__in LPCWSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in_opt HANDLE hTemplateFile
);
#ifdef UNICODE
#define CreateFile CreateFileW
#else
#define CreateFile CreateFileA
#endif // !UNICODE
lpFileName是檔案或裝置的名稱。
dwDesiredAccess是訪問屬性。
dwShareMode是共用屬性。
lpSecurityAttributes是安全屬性。
dwCreationDisposition是建立屬性。
dwFlagsAndAttributes是檔案標誌和屬性。
hTemplateFile是檔案模板。
調用函數的例子如下:
#001 //建立檔案。
#002 //蔡軍生 2007/10/18 QQ:9073204 深圳
#003 void CreateFileDemo(void)
#004 {
#005 //
#006 HANDLE hFile = ::CreateFile(_T("CreateFileDemo.txt"), //建立檔案的名稱。
#007 GENERIC_WRITE, // 寫檔案。
#008 0, // 不共用讀寫。
#009 NULL, // 預設安全屬性。
#010 CREATE_ALWAYS, // 如果檔案存在,也建立。
#011 FILE_ATTRIBUTE_NORMAL, // 一般的檔案。
#012 NULL); // 模板檔案為空白。
#013
#014 if (hFile == INVALID_HANDLE_VALUE)
#015 {
#016 //
#017 OutputDebugString(_T("CreateFile fail!\r\n"));
#018 }
#019 }
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/caimouse/archive/2007/10/18/1831801.aspx