NO1、CreateFile //打開或創建文件或者I/O設備,並返回可訪問的句柄
HANDLE WINAPI CreateFile(
HANDLE CreateFile(LPCTSTR lpFileName, //普通文件名或者設備文件名
DWORD dwDesiredAccess, //訪問模式(寫GENERIC_READ /讀GENERIC_WRITE)
DWORD dwShareMode, //共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全屬性的指針
DWORD dwCreationDisposition, //如何創建
DWORD dwFlagsAndAttributes, //文件屬性
HANDLE hTemplateFile //用於複製文件句柄
);
參數說明:太多了,複製粘貼都不想 可以去網上查一下。
返回值:失敗返回INVALID_HANDLE_VALUE,成功返回一個內核對象句柄
NO2、SetFilePointer //移動一個打開文件的指針
DWORD SetFilePointer(
HANDLE hFile, // 文件句柄
LONG lDistanceToMove, // 偏移量(低位)
PLONG lpDistanceToMoveHigh, // 偏移量(高位)
DWORD dwMoveMethod // 基準位置FILE_BEGIN:文件開始位置 FILE_CURRENT:文件當前位置 FILE_END:
//文件結束位置
說明:移動一個打開文件的指針
返回值:返回一個新位置,從文件起始處開始算起的一個字節偏移量。
NO3、SetEndOfFile //將當前文件指針位置設置爲文件尾
BOOL WINAPI SetEndOfFile(HANDLE hFile);
說明:將當前位置設置爲文件尾
返回值:非零表示成功,0表示失敗。
NO4、DuplicateHandle //拷貝另一個文件句柄的收穫可以用到
BOOL WINAPI DuplicateHandle(
__in HANDLE hSourceProcessHandle,
__in HANDLE hSourceHandle,
__in HANDLE hTargetProcessHandle,
__out LPHANDLE lpTargetHandle,
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in DWORD dwOptions
);
參數 類型及說明
hSourceProcessHandle:源進程內核句柄(即負責傳遞內核對象句柄的進程句柄,可以利用
GetCurrentProcess獲得當前進程的僞句柄)
hSourceHandle:要傳遞的內核對象句柄
hTargetProcessHandle:目標進程內核句柄
lpTargetHandle:接收內核對象句柄的地址(先隨便聲明一個HANDLE)
dwDesiredAccess:TargetHandle句柄使用何種訪問掩碼(這個掩碼是在句柄表中的一項)
bInheritHandle:是否擁有繼承
dwOptions:當設DUPLICATE_SAME_ACCESS時,表示於源的內核對象所有標誌一樣,此時wDesiredAccess可標誌
爲0
返回值:非零成功,0表示失敗
NO5、FlushFileBuffers //刷新內部文件緩衝區
BOOL WINAPI FlushFileBuffers(
__in HANDLE hFile; //文件句柄
)
說明:刷新文件緩衝區
返回值:非零成功,0失敗
NO6、GetFileSize //獲取文件長度
DWORD WINAPI GetFileSize(
__in HANDLE hFile,
__out LPDWORD lpFileSizeHigh
);
參數說明:
hFile:文件的句柄。
lpFileSizeHigh:指定一個長整數,用於裝載一個64位文件長度的頭32位。如這個長度沒有超過2^32個字節,則
該參數可以設爲NULL(變成ByVal)。
返回值:如果函數調用成功,則返回值爲文件大小的低位雙字,lpFileSizeHigh返回文件大小的高階雙字。
如果函數返回值爲INVALID_FILE_SIZE,並且GetLastError函數返回值非NO_ERROR,則函數調用失敗。
功能:獲得文件大小
示例代碼:
DWORD fileSizeHigh;
DWORD fileSizeLow = GetFileSize(hFile,&fileSizeHigh);
UNIT64 fileSize = (((UINT64)fileSizeHiegh) << 32 ) | fileSizeLow;
NO7、GetFileType //獲得文件類型
DWORD WINAPI GetFileType(
__in HANDLE hFile; //文件句柄
)
說明:判斷文件類型
返回值:下述常數之一:
FILE_TYPE_UNKNOWN 文件類型未知
FILE_TYPE_DISK 屬於磁盤文件
FILE_TYPE_CHAR 文件是一個控制檯或打印機
FILE_TYPE_PIPE 文件是個管道
NO8、LockFile和UnLockFile //鎖定,解鎖文件區域,防止訪問衝突
BOLL WINAPI LockFile(
__in hFile, //欲鎖定文件的句柄
__in dwFileOffsetLow, //指定欲鎖定區域起始處的低32位地址
__in dwFileOffsetHigh, //指定欲鎖定區域起始處的高32位地址
__in nNumberOfBytesToLockLow, //鎖定區域包含字符數量的低32位值
__in nNumberOfBytesToLockHigh, //鎖定區域包含字符數量的高32位值
)
BOLL WINAPI UnLockFile(
__in hFile, //欲解鎖文件的句柄
__in dwFileOffsetLow, //指定欲解鎖區域起始處的低32位地址
__in dwFileOffsetHigh, //指定欲解鎖區域起始處的高32位地址
__in nNumberOfBytesToUnLockLow, //鎖定區域包含字符數量的低32位值
__in nNumberOfBytesToUnLockHigh, //鎖定區域包含字符數量的高32位值
)
說明:如果文件是以共享模式打開,多個進程都可以訪問該文件,會出現訪問衝突,利用LockFile和UNLockFile
可以解決。
返回值:成功返回非零,失敗返回0
NO9、CFileException //這是一個文件相關異常的類
說明:(百度百科複製的)
個CFileException對象代表了與文件相關的異常。CFileException類包括有可移植的原因代碼和操作系統指定錯誤值等公共數據成員。此類也提供產生文件異常的靜態成員函數,返回操作系統和C運行中的錯誤原因代碼。
CFileException對象在CFile成員函數中被創建和產生,也可在派生類成員函數中創建或產生。可在CATCH表達式範圍內訪問這些對象。因爲可移植,可以僅用出錯代碼獲取異常的原因。
成員:
m_cause包含異常原因相對應的可移植代碼
m_IosError包含相關操作系統錯誤代碼
m_strFileName包含異常的文件名
代碼專函:
OsErrorToException返回與操作系統錯誤值相對應的出錯原因代碼
ErrnoToException返回與運行錯誤值相對應的出錯原因代碼
幫助函數:
ThrowOsError返回一個基於操作系統錯誤值相對應的出錯原因代碼
CFileException::ThrowOsError(::GetLastError()); //可以對GetLastError返回的值進行類型轉換
ThrowErrno產生一個基於運行錯誤值的文件異常