幾個文件指針操作的函數

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產生一個基於運行錯誤值的文件異常

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章