亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? file.c

?? ucos-ii的文件系統, 針對SD-MMC的ARM7平臺的開發 此代碼在philip LPC214x上得到認證, 僅供大家參考
?? C
?? 第 1 頁 / 共 3 頁
字號:
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2003年6月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint32 FileRead(void *Buf, uint32 Size, HANDLE Handle)
{
    uint8 *temp;
    uint32 i;
    
    temp = (uint8 *)Buf;
    for (i = 0; i < Size; i++)
    {
        if (FileGetCh(temp, Handle) != RETURN_OK)
        {
            break;
        }
        temp++;
    }
    return i;
}

/*********************************************************************************************************
** 函數名稱: FilePutCh
** 功能描述: 寫一個字節到文件
**
** 輸 入: Ch:要寫的數據
**        Handle:文件句柄
** 輸 出: RETURN_OK:成功
**        其它參考fat.h中關于返回值的說明 
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2003年6月5日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計
** 日 期: 2004年4月10日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 FilePutCh(uint8 Ch, HANDLE Handle)
{
    uint32 i, j, SecIndex;
    MY_FILE *fp;
    Disk_Info * DiskInfo;
    uint8 Rt;
    uint8 *Buf;

    Rt = PARAMETER_ERR;
    fp = FileInfo + Handle;
    if (Handle >= 0 && Handle < MAX_OPEN_FILES)      /* Handle是否有效 */
    if (((fp->Flags) & FILE_FLAGS_WRITE) != 0)       /* 對應的打開文件信息表是否已使用 */
    {
        Rt = FILE_EOF;
        if (fp->Offset <= fp->FileSize)
        {
            Rt = NOT_FIND_DISK;
                /* 獲取文件所在邏輯盤信息 */
            DiskInfo = GetDiskInfo(fp->Drive);
            if (DiskInfo != NULL)
            {
                
                /* 調整文件指針 */
                j = (fp->Offset) % (DiskInfo->SecPerClus * DiskInfo->BytsPerSec); 
                
                if (j == 0)
                {
                    if (fp->Offset < fp->FileSize)
                    {
                        fp->Clus = FATGetNextClus(fp->Drive, fp->Clus);
                    }
                    else
                    {
                        i = FATAddClus(fp->Drive, fp->Clus);
                        if (i >= BAD_CLUS)
                        {
                            return DISK_FULL;
                        }
                        fp->Clus = i;
                        if (fp->FstClus == EMPTY_CLUS)
                        {
                            fp->FstClus = i;
                        }
                    }
                }
                
                /* 計算數據所在扇區 */
                i = j / DiskInfo->BytsPerSec;
                j = j % DiskInfo->BytsPerSec;
                SecIndex = (fp->Clus - 2) * DiskInfo->SecPerClus + DiskInfo->DataStartSec + i;
                Rt = SECTOR_READ_ERR;
                
                /* 調整打開文件信息表 */
                fp->Offset++;
                if (fp->Offset > fp->FileSize)
                {
                    fp->FileSize = fp->Offset;
                }

                /* 打開扇區 */
                Buf = OpenSec(fp->Drive, SecIndex);
                if (Buf != NULL)
                {
                    /* 寫扇區數據 */
                    if (ReadSec(fp->Drive, SecIndex) == RETURN_OK)
                    {
                        /* 存儲數據 */
                        Buf[j] = Ch;
                        WriteSec(fp->Drive, SecIndex);
                        Rt = RETURN_OK;
                    }
                    CloseSec(fp->Drive, SecIndex);
                }
            }
        }
    }
    return Rt;
}

/*********************************************************************************************************
** 函數名稱: FileWrite
** 功能描述: 寫文件
**
** 輸 入: Buf:要寫的數據
**        Size:要寫的字節數
**        Handle:文件句柄
** 輸 出: 實際寫的字節數
**         
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2003年6月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint32 FileWrite(void *Buf, uint32 Size, HANDLE Handle)
{
    uint8 *temp;
    uint32 i;
    
    temp = (uint8 *)Buf;
    for (i = 0; i < Size; i++)
    {
        if (FilePutCh(*temp, Handle) != RETURN_OK)
        {
            break;
        }
        temp++;
    }
    return i;
}

/*********************************************************************************************************
** 函數名稱: FileCloseAll
** 功能描述: 關閉所有打開的文件
**
** 輸 入: 無
**
** 輸 出: 無
**         
** 全局變量: FileInfo
** 調用模塊: AllCacheWriteBack
**
** 作 者: 陳明計
** 日 期: 2003年6月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void FileCloseAll(void)
{
    uint32 i;

    for (i = 0; i < MAX_OPEN_FILES; i++)
    {
        FileClose(i);
    }
    AllCacheWriteBack();
}

/*********************************************************************************************************
** 函數名稱: FileEof
** 功能描述: 判斷文件是否到讀\寫到文件尾
**
** 輸 入: Handle:文件句柄
**
** 輸 出: 0:否
**        1:是 
** 全局變量: FileInfo
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2003年6月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 FileEof(HANDLE Handle)
{
    if (Handle < MAX_OPEN_FILES)
    if (FileInfo[Handle].Offset < FileInfo[Handle].FileSize)
    {
        return FALSE;
    }
    return TRUE;
}

/*********************************************************************************************************
** 函數名稱: FileSeek
** 功能描述: 移動文件讀\寫位置
**
** 輸 入: Handle:文件句柄
**        offset:移動偏移量
**        Whence:移動模式SEEK_SET:從文件頭計算SEEK_CUR:從當前位置計算SEEK_END:從文件尾計算
** 輸 出: 無
**         
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 陳明計
** 日 期: 2003年6月5日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陳明計
** 日 期: 2004年4月10日
**------------------------------------------------------------------------------------------------------
** 修改人: 陳明計
** 日 期: 2004年7月12日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 FileSeek(HANDLE Handle, int32 offset, uint8 Whence)
{
    uint8 Rt;
    uint32 i, Clus;
    MY_FILE *fp;
    Disk_Info * DiskInfo;
    
    Rt = PARAMETER_ERR;
    fp = FileInfo + Handle;
    if (Handle >= 0 && Handle < MAX_OPEN_FILES)     /* Handle是否有效 */
    if (fp->Flags  != 0)                            /* 對應的打開文件信息表是否已使用 */
    {
        Rt = RETURN_OK;
        switch (Whence)
        {
            case SEEK_END:             /* 從文件尾計算 */
                fp->Offset = fp->FileSize - offset;
                offset = -offset;
                break;
            case SEEK_SET:
                fp->Offset = offset;
                break;
            case SEEK_CUR:             /* 從當前位置計算 這里不用break是正確的*/
                i = fp->Offset + offset;
                break;
            default:
                Rt = PARAMETER_ERR;
                break;
        }
        /* 改變當前簇號 */
        if (Rt == RETURN_OK)
        {
            if (fp->Offset > fp->FileSize)
            {
                if (offset > 0)
                {
                    fp->Offset = fp->FileSize;
                }
                else
                {
                    fp->Offset = 0;
                }
            }
            Rt = NOT_FIND_DISK;
            DiskInfo = GetDiskInfo(fp->Drive);
            if (DiskInfo != NULL)
            {
                Rt = RETURN_OK;
                i = fp->Offset / (DiskInfo->BytsPerSec * DiskInfo->SecPerClus);
                Clus = fp->FstClus;
                for (; i != 0; i--)
                {
                    Clus = FATGetNextClus(fp->Drive, Clus);
                    if (Clus >= BAD_CLUS)
                    {
                        Rt = FAT_ERR;
                        break;
                    }
                }
                fp->Clus = Clus;
            }
        }
    }
    return Rt;
}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
偷拍自拍另类欧美| 亚洲一区欧美一区| 欧美午夜精品电影| 成人爽a毛片一区二区免费| 亚洲午夜日本在线观看| 亚洲一区二区成人在线观看| 国产一区久久久| 久久精品99久久久| 日本不卡一区二区三区高清视频| 国产亚洲美州欧州综合国| 久久综合av免费| 精品国产乱码久久久久久1区2区| 精品成人私密视频| 亚欧色一区w666天堂| 久久精品国产精品亚洲红杏| 欧美怡红院视频| 亚洲欧洲日本在线| 亚洲制服欧美中文字幕中文字幕| 国产精品一区二区果冻传媒| jizz一区二区| 色婷婷国产精品久久包臀 | 国产日韩欧美精品综合| 国产精品热久久久久夜色精品三区| 国产精品灌醉下药二区| 五月开心婷婷久久| 欧美性高清videossexo| 亚洲尤物在线视频观看| 91在线精品秘密一区二区| 欧美日韩国产免费一区二区 | 日韩区在线观看| 久久久久九九视频| 亚洲一区二区在线免费看| 99精品欧美一区二区三区小说| 国产婷婷色一区二区三区| 国产在线播精品第三| 久久精品欧美日韩精品| 成人午夜av在线| 国产精品伦一区| 99re成人精品视频| 一区二区三区丝袜| 国产69精品久久久久毛片| 欧美一区二区三区不卡| 国产精品伦一区| 在线影院国内精品| 亚洲国产成人午夜在线一区| 亚洲第一福利视频在线| 欧美一区二区三区四区五区 | 99久久久久免费精品国产| 亚洲日本va午夜在线影院| 老司机一区二区| 国产亚洲一区二区三区四区| 不卡视频在线看| 2020国产成人综合网| 风间由美一区二区三区在线观看| 国产精品久久久久影院亚瑟| 在线亚洲人成电影网站色www| 欧美一级片免费看| 国产一区二区在线视频| 国产精品久久99| 欧美日韩国产精品自在自线| 麻豆精品视频在线观看视频| 欧美三级日韩在线| 亚洲黄色尤物视频| av日韩在线网站| 亚洲高清在线精品| 国产三级欧美三级日产三级99| av激情亚洲男人天堂| 亚洲一区二区免费视频| 国产三级精品视频| 欧美卡1卡2卡| 日韩精品成人一区二区在线| 在线一区二区三区做爰视频网站| 日韩电影在线观看一区| 国产精品美女久久久久久久久久久 | 亚洲成人在线观看视频| 久久综合成人精品亚洲另类欧美| 9色porny自拍视频一区二区| 日本免费新一区视频| 欧美国产日韩在线观看| 在线电影院国产精品| 成人午夜电影小说| 麻豆免费精品视频| 亚洲午夜精品网| 国产精品久久久久久妇女6080| 91精品国产色综合久久ai换脸 | 一区二区三区波多野结衣在线观看| 日韩欧美亚洲一区二区| 激情综合五月天| 久久久精品黄色| 欧美精品久久天天躁| 91丨九色porny丨蝌蚪| 亚洲人成精品久久久久| 欧美唯美清纯偷拍| 99综合电影在线视频| 国产一区二区影院| 免费亚洲电影在线| 无码av免费一区二区三区试看| 国产精品国产三级国产a| 国产色产综合色产在线视频| 日韩欧美中文字幕公布| 欧美剧在线免费观看网站| 91丝袜美女网| 91色在线porny| 99久久国产综合精品色伊| 成人少妇影院yyyy| 成人免费毛片嘿嘿连载视频| 激情五月激情综合网| 亚洲欧洲日产国产综合网| 国产欧美va欧美不卡在线| 久久综合久久久久88| www国产成人| 久久精品一区二区三区av| 26uuu成人网一区二区三区| 精品成人一区二区| 久久精品欧美日韩| 国产精品人妖ts系列视频| 国产精品三级久久久久三级| 亚洲欧美一区二区在线观看| 国产精品美女久久久久久久久| 国产调教视频一区| 国产精品午夜在线| 亚洲免费观看在线视频| 亚洲精品一卡二卡| 一区二区高清免费观看影视大全 | 亚洲欧洲综合另类| 一区二区三区产品免费精品久久75| 亚洲三级免费观看| 亚洲综合无码一区二区| 亚洲国产成人va在线观看天堂| 婷婷成人激情在线网| 蜜桃av一区二区在线观看 | 蜜桃久久久久久久| 国产综合成人久久大片91| 国产成人精品亚洲777人妖| 天天色图综合网| 久久精品国产免费| 精品影院一区二区久久久| 激情五月婷婷综合网| caoporm超碰国产精品| 91美女片黄在线观看91美女| 欧美调教femdomvk| 欧美另类久久久品| 国产午夜一区二区三区| 亚洲人成小说网站色在线 | 一区二区在线看| 蜜桃免费网站一区二区三区| 成人污污视频在线观看| 欧美日韩免费高清一区色橹橹 | 亚洲人成伊人成综合网小说| 五月综合激情婷婷六月色窝| 激情综合色综合久久| www.av亚洲| 日韩一级片在线播放| 日韩一区在线播放| 麻豆精品一区二区av白丝在线| 不卡的电影网站| 日韩区在线观看| 一区二区三区在线视频播放| 国产一区二区三区免费在线观看 | 亚洲日本欧美天堂| 久久er精品视频| 欧美在线一二三四区| 久久理论电影网| 亚洲动漫第一页| 成人精品免费网站| 日韩视频免费观看高清完整版| 亚洲丝袜另类动漫二区| 精品亚洲国产成人av制服丝袜| 色婷婷亚洲一区二区三区| 久久精品人人爽人人爽| 日本中文字幕一区二区视频| 99久久亚洲一区二区三区青草| 亚洲精品一区二区三区福利| 亚洲超丰满肉感bbw| 99久久精品免费观看| 久久久久久久久一| 日本视频免费一区| 欧美日韩一区二区三区视频| 国产精品久久久久三级| 国产一区二区精品久久91| 91精品国产高清一区二区三区蜜臀 | 婷婷国产在线综合| 欧美性大战久久| 亚洲欧美另类在线| 不卡一区二区在线| 国产精品国产三级国产专播品爱网| 极品少妇xxxx精品少妇偷拍| 欧美精品aⅴ在线视频| 一区二区欧美在线观看| 91丨九色porny丨蝌蚪| 国产精品美日韩| 不卡电影免费在线播放一区| 久久蜜桃av一区二区天堂| 国内精品免费**视频| 久久久一区二区三区| 国产精品正在播放| 国产欧美日韩亚州综合| 成人精品在线视频观看| 国产精品嫩草影院com| av激情亚洲男人天堂|