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

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

?? fat_in.c

?? uCOS uCGUI uCFS 在ADS下調試通過 LPC2292
?? C
字號:
/*
**********************************************************************
*                          Micrium, Inc.
*                      949 Crestview Circle
*                     Weston,  FL 33327-1848
*
*                            uC/FS
*
*             (c) Copyright 2001 - 2003, Micrium, Inc.
*                      All rights reserved.
*
***********************************************************************

----------------------------------------------------------------------
File        : fat_in.c
Purpose     : FAT read routines
----------------------------------------------------------------------
Known problems or limitations with current version
----------------------------------------------------------------------
None.
---------------------------END-OF-HEADER------------------------------
*/

/*********************************************************************
*
*             #include Section
*
**********************************************************************
*/

#include "fs_conf.h"
#include "fs_port.h"
#include "fs_dev.h"
#include "fs_api.h"
#include "fs_fsl.h"
#include "fs_int.h"
#include "fs_os.h"
#include "fs_lbl.h"
#include "fs_fat.h"


/*********************************************************************
*
*             Global functions
*
**********************************************************************
*/

/*********************************************************************
*
*             FS__fat_fread
*
  Description:
  FS internal function. Read data from a file.

  Parameters:
  pData       - Pointer to a data buffer for storing data transferred
                from file. 
  Size        - Size of an element to be transferred from file to data
                buffer
  N           - Number of elements to be transferred from the file.
  pFile       - Pointer to a FS_FILE data structure.
  
  Return value:
  Number of elements read.
*/

FS_size_t FS__fat_fread(void *pData, FS_size_t Size, FS_size_t N, FS_FILE *pFile) {
  FS_size_t todo;
  FS_u32 i;
  FS_u32 j;
  FS_u32 fatsize;
  FS_u32 fileclustnum;
  FS_u32 diskclustnum;
  FS_u32 prevclust;
  FS_u32 dstart;
  FS_u32 dsize;
  FS_u32 datastart;
  char *buffer;
  int err;
                                            
  if (!pFile) {
      return 0;  /* No valid pointer to a FS_FILE structure */
  }
  /* Check if media is OK */
  err = FS__lb_status(FS__pDevInfo[pFile->dev_index].devdriver, pFile->fileid_lo);
  if (err == FS_LBL_MEDIACHANGED) {
    /* Media has changed */
    pFile->error = FS_ERR_DISKCHANGED;
    return 0;
  }
  else if (err < 0) {
    /* Media cannot be accessed */
    pFile->error = FS_ERR_READERROR;
    return 0;
  }
  buffer = FS__fat_malloc(FS_FAT_SEC_SIZE);
  if (!buffer) {
    return 0;
  }
  fatsize = FS__FAT_aBPBUnit[pFile->dev_index][pFile->fileid_lo].FATSz16;
  if (fatsize == 0) {
    /* FAT32 */
     fatsize = FS__FAT_aBPBUnit[pFile->dev_index][pFile->fileid_lo].FATSz32;
  }
  dstart    = FS__FAT_aBPBUnit[pFile->dev_index][pFile->fileid_lo].RsvdSecCnt + FS__FAT_aBPBUnit[pFile->dev_index][pFile->fileid_lo].NumFATs * fatsize;
  dsize     = ((FS_u32)((FS_u32)FS__FAT_aBPBUnit[pFile->dev_index][pFile->fileid_lo].RootEntCnt) * FS_FAT_DENTRY_SIZE) / FS_FAT_SEC_SIZE;
  datastart = dstart + dsize;
  prevclust = 0;
  todo = N * Size;
  while (todo) {
    if (pFile->filepos >= pFile->size) {
      /* EOF has been reached */
      pFile->error = FS_ERR_EOF;
      FS__fat_free(buffer);
      return ((N * Size - todo) / Size);
    }
    fileclustnum = pFile->filepos / (FS_FAT_SEC_SIZE * FS__FAT_aBPBUnit[pFile->dev_index][pFile->fileid_lo].SecPerClus);
    if (prevclust == 0) {
      diskclustnum = pFile->CurClust; 
      if (diskclustnum == 0) {
        /* Find current cluster by starting at 1st cluster of the file */
        diskclustnum = FS__fat_diskclust(pFile->dev_index, pFile->fileid_lo, pFile->fileid_hi, fileclustnum);
      }
    }
    else {
      /* Get next cluster of the file */
      diskclustnum = FS__fat_diskclust(pFile->dev_index, pFile->fileid_lo, prevclust, 1);
    }
    prevclust       = diskclustnum;
    pFile->CurClust = diskclustnum;
    if (diskclustnum == 0) {
      /* Could not find current cluster */
      pFile->error = FS_ERR_READERROR;
      FS__fat_free(buffer);
      return ((N * Size - todo) / Size);
    }
    diskclustnum -= 2;
    j = (pFile->filepos % (FS_FAT_SEC_SIZE * FS__FAT_aBPBUnit[pFile->dev_index][pFile->fileid_lo].SecPerClus))/ FS_FAT_SEC_SIZE;
    while (1) {
      if (!todo) {
        break;  /* Nothing more to write */
      }
      if (j >= (FS_u32)FS__FAT_aBPBUnit[pFile->dev_index][pFile->fileid_lo].SecPerClus) {
        break;  /* End of the cluster reached */
      }
      if (pFile->filepos >= pFile->size) {
        break;  /* End of the file reached */
      }
      err = FS__lb_read(FS__pDevInfo[pFile->dev_index].devdriver, pFile->fileid_lo,
                    datastart +
                    diskclustnum * FS__FAT_aBPBUnit[pFile->dev_index][pFile->fileid_lo].SecPerClus + j,
                    (void*)buffer);
      if (err < 0) {
        pFile->error = FS_ERR_READERROR;
        FS__fat_free(buffer);
        return ((N * Size - todo) / Size);
      }
      i = pFile->filepos % FS_FAT_SEC_SIZE;
      while (1) {
        if (!todo) {
          break;  /* Nothing more to write */
        }
        if (i >= FS_FAT_SEC_SIZE) {
          break;  /* End of the sector reached */
        }
        if (pFile->filepos >= pFile->size) {
          break;  /* End of the file reached */
        }
        *((char*)(((char*)pData) + N * Size - todo)) = buffer[i];
        i++;
        pFile->filepos++;
        todo--;
      }
      j++;
    }  /* Sector loop */
  }  /* Cluster loop */
  if (i >= FS_FAT_SEC_SIZE) {
    if (j >= FS__FAT_aBPBUnit[pFile->dev_index][pFile->fileid_lo].SecPerClus) {
      pFile->CurClust = FS__fat_diskclust(pFile->dev_index, pFile->fileid_lo, prevclust, 1);
    }
  }
  FS__fat_free(buffer);
  return ((N * Size - todo) / Size);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色久综合一二码| 国产欧美一区二区三区沐欲| 久久蜜桃一区二区| 亚洲午夜在线电影| 国产精品1区2区3区在线观看| 91在线porny国产在线看| 日韩午夜精品电影| 亚洲最大成人网4388xx| 国产精品一区二区在线观看网站 | 亚洲天堂免费在线观看视频| 日韩av一区二| 色悠久久久久综合欧美99| 久久综合色婷婷| 日韩在线卡一卡二| 色狠狠色狠狠综合| 国产精品久久午夜| 国产精品99久久久久久似苏梦涵| 制服丝袜在线91| 一区二区三区四区高清精品免费观看| 国产精品1区二区.| 26uuu亚洲综合色欧美| 日本在线播放一区二区三区| 欧洲精品中文字幕| 一区二区三区中文字幕电影| 不卡一区二区中文字幕| 国产色产综合色产在线视频| 美国十次综合导航| 欧美不卡一区二区三区| 看国产成人h片视频| 欧美一级片在线看| 日本免费新一区视频| 欧美一级片在线观看| 亚洲mv在线观看| 欧美午夜寂寞影院| 亚洲国产cao| 欧美性做爰猛烈叫床潮| 亚洲国产综合91精品麻豆| 欧美在线免费观看视频| 亚洲福中文字幕伊人影院| 色狠狠一区二区| 五月天欧美精品| 日韩欧美国产一区二区在线播放| 久久99久久精品欧美| 久久青草国产手机看片福利盒子 | 色婷婷国产精品综合在线观看| 中文字幕一区二区三区在线播放| 国产91色综合久久免费分享| 国产精品女同互慰在线看| 不卡的av在线播放| 亚洲小说欧美激情另类| 日韩欧美一二三区| 成人免费视频免费观看| 亚洲免费在线观看| 欧美一区二区久久| 国产a区久久久| 一片黄亚洲嫩模| 日韩一级高清毛片| 国产99精品国产| 亚洲国产欧美在线| 精品欧美一区二区久久| av综合在线播放| 天堂久久一区二区三区| www激情久久| 色婷婷国产精品综合在线观看| 亚洲国产精品欧美一二99| 久久免费偷拍视频| 欧美午夜精品一区二区三区| 国内精品免费**视频| 亚洲码国产岛国毛片在线| 日韩视频永久免费| 99精品国产视频| 青青草97国产精品免费观看无弹窗版 | 麻豆久久一区二区| 亚洲日本护士毛茸茸| 日韩一区二区在线看片| 成人激情动漫在线观看| 五月天一区二区三区| 亚洲国产精品国自产拍av| 欧美日韩一二三| 成人av动漫在线| 久久成人免费网| 亚洲自拍偷拍图区| 日本一区二区三区高清不卡| 欧美精品日韩一区| 91免费看视频| 高清视频一区二区| 另类小说色综合网站| 亚洲免费在线视频| 国产目拍亚洲精品99久久精品| 欧美色综合网站| 波多野结衣精品在线| 精品亚洲国内自在自线福利| 夜夜嗨av一区二区三区中文字幕 | 欧美一区二区女人| 欧美日韩在线播放一区| 成人av网站在线观看| 国产一区二区三区久久久 | 69成人精品免费视频| 91在线一区二区| 国产91精品露脸国语对白| 蜜桃传媒麻豆第一区在线观看| 亚洲一区二区三区中文字幕| 亚洲欧美视频在线观看视频| 日本一区二区视频在线观看| 日韩欧美综合在线| 国产精选一区二区三区| 老司机免费视频一区二区| 亚洲第一主播视频| 亚洲午夜国产一区99re久久| 亚洲免费在线播放| 亚洲免费观看高清完整| 日韩一区欧美小说| 国产精品久久久久久久久久久免费看| 久久久www成人免费毛片麻豆| 日韩美女一区二区三区| 欧美一级二级三级乱码| 日韩欧美一区中文| 欧美大片在线观看| 久久免费的精品国产v∧| www激情久久| 国产精品久久久久影院亚瑟 | 欧美日韩日日夜夜| 欧美三级日韩三级| 91精品国产综合久久精品| 91麻豆精品国产| 日韩欧美中文字幕精品| 久久亚洲二区三区| 国产精品家庭影院| 成人一道本在线| 国产一区二区三区免费在线观看| 日本成人在线看| 精品一区二区三区蜜桃| 国产精品欧美久久久久一区二区| 久久久精品国产免大香伊| 欧美一级久久久| 91搞黄在线观看| 亚洲一区视频在线| 日韩精品一二区| 九九视频精品免费| 成人a区在线观看| 欧美又粗又大又爽| 日韩一区二区在线免费观看| 久久久久久97三级| 一区二区三区在线播| 蜜乳av一区二区| 大白屁股一区二区视频| 欧美特级限制片免费在线观看| 日韩一级片在线观看| 中文字幕在线免费不卡| 亚洲成人午夜电影| 国产91精品精华液一区二区三区| 色综合中文字幕国产 | 欧美亚洲国产bt| 2欧美一区二区三区在线观看视频| 国产精品美女久久久久aⅴ| 亚洲午夜精品一区二区三区他趣| 美女被吸乳得到大胸91| 91视视频在线直接观看在线看网页在线看| 欧美一a一片一级一片| 日韩免费观看高清完整版 | 久久精品视频免费观看| 中文字幕一区二区在线播放| 日本不卡在线视频| 91在线一区二区三区| 精品国产乱码久久久久久久| 国产精品乱子久久久久| 青青草精品视频| 色婷婷亚洲一区二区三区| 久久久国产午夜精品| 亚洲福利视频一区二区| 成人va在线观看| 欧美一级黄色大片| 亚洲欧美另类久久久精品| 国产一区二区三区电影在线观看 | 成人av资源网站| 亚洲精品一区二区三区影院| 一区二区三区在线观看动漫| 国产在线精品视频| 日韩欧美中文字幕公布| 亚洲综合免费观看高清完整版 | 粉嫩av一区二区三区在线播放| 欧美精选午夜久久久乱码6080| 亚洲欧美在线aaa| 国产一区二区三区国产| 欧美一区二区视频在线观看2022| 亚洲自拍都市欧美小说| 色综合久久中文字幕综合网| 欧美国产激情一区二区三区蜜月| 久久99精品国产麻豆婷婷洗澡| 欧美日韩一区二区三区免费看| 亚洲欧美另类小说视频| 99视频有精品| 国产精品久久看| 91一区二区在线观看| 亚洲欧洲日本在线| 一本久久精品一区二区| 综合久久久久久| 91激情在线视频| 一区二区三区四区视频精品免费| 一本久久综合亚洲鲁鲁五月天 |