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

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

?? fat_in.c

?? ucfs的源代碼
?? 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一区二区三区免费野_久草精品视频
18欧美亚洲精品| 91片黄在线观看| 日韩精品午夜视频| 亚洲免费成人av| 亚洲一区二区影院| 午夜国产不卡在线观看视频| 丝袜美腿成人在线| 奇米色777欧美一区二区| 日本在线不卡视频一二三区| 日韩成人精品在线观看| 蜜桃精品在线观看| 九九精品视频在线看| 国产成人免费视频网站| av午夜一区麻豆| 欧美色精品在线视频| 欧美一区二区三区爱爱| 精品成人在线观看| 国产精品视频一二| 亚洲国产精品尤物yw在线观看| 日本欧美一区二区三区乱码| 国产一区二三区好的| 成人精品高清在线| 欧美三级三级三级爽爽爽| 欧美不卡一区二区三区| 中文字幕精品一区| 婷婷六月综合亚洲| 成人理论电影网| 欧美日韩国产高清一区二区 | 亚洲午夜一区二区三区| 日韩av电影一区| 国产精品亚洲专一区二区三区| 99久久99久久免费精品蜜臀| 777欧美精品| 国产精品免费视频网站| 水蜜桃久久夜色精品一区的特点| 激情综合色播激情啊| 欧美最猛性xxxxx直播| 久久久亚洲综合| 亚洲bt欧美bt精品| 成人精品视频网站| 日韩视频免费直播| 亚洲精品免费在线| 国产成人免费网站| 日韩免费高清av| 夜夜操天天操亚洲| 白白色 亚洲乱淫| 日韩精品在线网站| 亚洲1区2区3区4区| 91热门视频在线观看| 久久久久久电影| 久久狠狠亚洲综合| 欧美日韩免费观看一区二区三区 | 久久久99久久| 麻豆成人91精品二区三区| 91啦中文在线观看| 国产欧美精品一区二区色综合 | 免费的国产精品| 在线观看亚洲精品视频| 国产精品伦理一区二区| 国产精品69毛片高清亚洲| 日韩欧美一区二区三区在线| 亚洲福利视频一区| 欧美在线不卡视频| 亚洲另类在线制服丝袜| 99这里只有精品| 亚洲色图欧美在线| 97se亚洲国产综合自在线观| 国产精品女同一区二区三区| 国产91高潮流白浆在线麻豆 | 亚洲桃色在线一区| 成人黄色网址在线观看| 国产精品视频yy9299一区| 国产精品一区二区视频| 国产亚洲成av人在线观看导航| 国产在线看一区| 国产欧美精品一区二区色综合朱莉| 麻豆成人久久精品二区三区小说| 欧美一级在线观看| 黑人巨大精品欧美黑白配亚洲| 精品入口麻豆88视频| 精品一区二区久久| 国产精品久久久久四虎| 95精品视频在线| 亚洲sss视频在线视频| 91精品国产综合久久婷婷香蕉| 日韩一区欧美二区| 久久嫩草精品久久久精品一| 国产风韵犹存在线视精品| 欧美国产一区二区在线观看| 99精品在线免费| 亚洲高清免费观看 | 午夜精品成人在线视频| 日韩一区二区在线看片| 国产风韵犹存在线视精品| 国产精品理论在线观看| 欧美伊人精品成人久久综合97| 青青草97国产精品免费观看 | 久久影院电视剧免费观看| 国产成人午夜视频| 亚洲视频一区二区免费在线观看 | 久久久久久综合| 91麻豆精东视频| 麻豆精品一区二区三区| 国产精品乱人伦| 538在线一区二区精品国产| 国产一区欧美一区| 亚洲已满18点击进入久久| 亚洲精品在线观看网站| 91麻豆免费在线观看| 毛片av一区二区| 亚洲欧美视频在线观看视频| 欧美成人综合网站| 色综合天天综合在线视频| 精品中文字幕一区二区| 一区二区三区美女视频| wwwwxxxxx欧美| 欧美精品三级在线观看| 99在线视频精品| 国产麻豆精品久久一二三| 亚洲一区二区黄色| 欧美韩国一区二区| 精品国产成人系列| 欧美日韩国产综合一区二区三区| 成人高清av在线| 国产一区二区伦理| 麻豆成人av在线| 天天爽夜夜爽夜夜爽精品视频| 18欧美亚洲精品| 欧美激情一区在线观看| 久久综合狠狠综合久久综合88| 欧美日韩精品高清| 欧美午夜视频网站| 一本色道久久综合亚洲91| 国产成人av福利| 久久av资源站| 麻豆精品视频在线观看视频| 亚洲国产视频一区| 亚洲午夜精品久久久久久久久| 最新中文字幕一区二区三区| 国产亚洲午夜高清国产拍精品| 欧美电影免费提供在线观看| 欧美男男青年gay1069videost| 91久久国产综合久久| 91在线精品秘密一区二区| 成人性视频免费网站| 国产一区二区福利视频| 激情综合色播激情啊| 国产在线播放一区二区三区| 久久精品国产999大香线蕉| 日本系列欧美系列| 蜜臀av性久久久久蜜臀av麻豆| 奇米777欧美一区二区| 毛片av中文字幕一区二区| 毛片av一区二区三区| 精品无人区卡一卡二卡三乱码免费卡 | 91丨porny丨户外露出| 99视频一区二区| 欧美亚洲国产bt| 91麻豆精品国产自产在线观看一区 | 欧美精品一区二区三区蜜桃视频| 欧美一级片免费看| 精品国产乱码久久| 国产精品免费视频网站| 中文字幕综合网| 亚洲第一激情av| 美女性感视频久久| 成人午夜免费视频| 在线观看亚洲a| 欧美一级在线视频| 国产精品久久久久久亚洲伦 | 久久久国产精品麻豆| 国产女主播在线一区二区| 亚洲私人影院在线观看| 三级久久三级久久| 国产经典欧美精品| 91色porny| 精品福利视频一区二区三区| 国产欧美1区2区3区| 亚洲国产精品尤物yw在线观看| 麻豆91免费看| proumb性欧美在线观看| 欧美精品xxxxbbbb| 国产精品少妇自拍| 五月婷婷激情综合网| 国产91精品入口| 91精品国产综合久久香蕉的特点| 国产日产欧产精品推荐色| 亚洲国产日韩精品| 国产精品资源在线观看| 欧美亚洲一区二区在线| 久久亚洲精华国产精华液| 一区二区三区在线播| 国产在线播精品第三| 欧美日韩国产中文| 亚洲国产精品激情在线观看| 亚洲bt欧美bt精品777| 成人av电影在线| 欧美tickling挠脚心丨vk| 一区二区免费在线| 懂色av中文一区二区三区|