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

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

?? fat_in.c

?? 這是ram7下的ucos_gus_fs的代碼,開發arm系列的朋友一定需要.
?? 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一区二区三区免费野_久草精品视频
亚洲卡通欧美制服中文| 欧美电影免费观看高清完整版在线| 免费视频最近日韩| 亚洲第一福利一区| 亚洲精品精品亚洲| 亚洲午夜电影在线观看| 亚洲影院免费观看| 亚洲第一激情av| 天天色图综合网| 免费看欧美美女黄的网站| 免费欧美在线视频| 激情综合一区二区三区| 国模冰冰炮一区二区| 国产一区欧美日韩| 福利电影一区二区| 色综合天天综合网国产成人综合天| k8久久久一区二区三区| 高清久久久久久| 一本大道综合伊人精品热热| 色国产精品一区在线观看| 欧洲日韩一区二区三区| 欧美喷潮久久久xxxxx| 欧美一级精品在线| 久久亚区不卡日本| 中文字幕中文乱码欧美一区二区| 最新不卡av在线| 午夜精品爽啪视频| 国产伦精品一区二区三区免费 | 国产精品国产三级国产aⅴ原创 | av男人天堂一区| 欧美影院午夜播放| 欧美videos大乳护士334| 久久精品网站免费观看| 一区二区在线观看视频在线观看| 午夜激情一区二区三区| 国产麻豆精品theporn| 色悠悠久久综合| 日韩欧美另类在线| 亚洲品质自拍视频网站| 久久精品久久综合| 一本大道久久a久久综合婷婷| 欧美精品三级在线观看| 国产精品美女久久久久久2018| 亚洲一区视频在线观看视频| 国产中文字幕一区| 欧美日韩国产色站一区二区三区| 26uuu久久综合| 亚洲高清免费视频| 99re在线精品| 久久久久久电影| 日韩电影在线免费| 91麻豆国产自产在线观看| 欧美电影精品一区二区| 亚洲小说欧美激情另类| 国产成人综合在线| 欧美一级xxx| 亚洲一区二区三区四区五区黄| 国产精品一卡二| 欧美一级夜夜爽| 亚洲国产一区在线观看| 99精品一区二区| 国产亚洲一区二区三区四区| 人人爽香蕉精品| 91黄色免费看| 亚洲三级电影网站| www.色综合.com| 日本一区二区成人| 国产高清精品久久久久| 欧美成人精品1314www| 日韩不卡手机在线v区| 欧美亚洲国产一卡| 亚洲免费观看高清完整版在线 | 国产中文一区二区三区| 精品国产一区二区在线观看| 天堂va蜜桃一区二区三区漫画版| 91婷婷韩国欧美一区二区| 中文字幕一区二区三区色视频 | 久久亚洲精品国产精品紫薇| 麻豆一区二区三区| 26uuu久久综合| 国产精品系列在线观看| 久久婷婷色综合| 成人精品电影在线观看| 中文字幕av一区二区三区免费看| 国产成a人亚洲精| 久久蜜臀精品av| 国产成人精品影院| 欧美激情在线一区二区三区| 成人丝袜高跟foot| 亚洲黄色片在线观看| 在线不卡中文字幕| 久久精品国产99国产精品| 久久奇米777| 不卡视频免费播放| 亚洲国产精品久久久久秋霞影院| 欧美日韩精品综合在线| 奇米色一区二区三区四区| 久久中文娱乐网| bt欧美亚洲午夜电影天堂| 一区二区国产盗摄色噜噜| 在线综合视频播放| 国产福利91精品| 亚洲欧美激情在线| 日韩欧美一二三| 成人国产精品免费观看| 亚洲一级不卡视频| 久久综合九色欧美综合狠狠| 成人午夜电影久久影院| 五月开心婷婷久久| 国产日韩成人精品| 欧美性极品少妇| 国产一区二区三区av电影| 亚洲欧美日韩人成在线播放| 51久久夜色精品国产麻豆| 粉嫩嫩av羞羞动漫久久久| 亚洲国产日韩av| 国产免费久久精品| 欧美老女人在线| 99re亚洲国产精品| 久久99久久久久| 一区2区3区在线看| 亚洲国产激情av| 欧美顶级少妇做爰| 97se狠狠狠综合亚洲狠狠| 免费一级欧美片在线观看| 国产精品国产三级国产有无不卡| 欧美一区二区三区白人| 91免费视频网址| 国内精品伊人久久久久av影院| 亚洲黄色小视频| 国产精品青草综合久久久久99| 欧美一区二区在线不卡| 色婷婷国产精品综合在线观看| 国内一区二区视频| 秋霞成人午夜伦在线观看| 亚洲欧美日韩国产综合在线| 久久精品日韩一区二区三区| 欧美一级片在线看| 欧美日韩mp4| 欧美日韩一区二区三区在线看| 99久久精品一区| av在线播放成人| 成人丝袜18视频在线观看| 国产在线不卡视频| 久久精品国产99久久6| 日韩精品欧美精品| 亚洲韩国一区二区三区| 亚洲另类春色国产| 亚洲视频香蕉人妖| 国产精品国产成人国产三级| 亚洲一级电影视频| 一区二区三区毛片| 亚洲一二三级电影| 亚洲成人自拍一区| 婷婷一区二区三区| 天使萌一区二区三区免费观看| 亚洲一区二区欧美| 丝袜美腿亚洲综合| 天堂va蜜桃一区二区三区漫画版 | 亚洲成人av电影| 亚洲成a人v欧美综合天堂下载| 亚洲第一久久影院| 日韩和欧美的一区| 激情伊人五月天久久综合| 黑人巨大精品欧美黑白配亚洲| 韩国理伦片一区二区三区在线播放 | 精品国产一区久久| 国产午夜精品一区二区 | 亚洲男人的天堂在线aⅴ视频| 亚洲美女免费视频| 五月婷婷激情综合| 久久99精品一区二区三区三区| 国产在线视频一区二区| 国产高清亚洲一区| 在线免费不卡电影| 欧美一区二区三区喷汁尤物| www激情久久| 最新国产成人在线观看| 日韩专区一卡二卡| 国产乱子轮精品视频| 99久久精品免费精品国产| 欧美日韩在线直播| 久久久综合精品| 亚洲精品美腿丝袜| 日av在线不卡| 99久久精品国产导航| 欧美肥大bbwbbw高潮| 亚洲国产高清不卡| 日韩高清不卡在线| www.欧美日韩国产在线| 欧美一区二区三区日韩| 中文字幕免费观看一区| 亚洲成av人片一区二区| 国产一区激情在线| 91精品91久久久中77777| 久久久亚洲欧洲日产国码αv| 亚洲猫色日本管| 国产精品中文有码| 69堂精品视频| 尤物在线观看一区|