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

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

?? ff.c

?? 最新的LPC214X FATFS驅動程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*-----------------------------------------------------------------------*//* Get file status from directory entry                                  *//*-----------------------------------------------------------------------*/#if _FS_MINIMIZE <= 1staticvoid get_fileinfo (   /* No return code */    FILINFO *finfo,   /* Ptr to store the file information */    const U8 *dir   /* Ptr to the directory entry */    ){  U8 n, c, a;  char *p;  p = &finfo->fname[0];  a = _USE_NTFLAG ? dir[DIR_NTres] : 0;   /* NT flag */  for (n = 0; n < 8; n++) { /* Convert file name (body) */    c = dir[n];    if (c == ' ') break;    if (c == 0x05) c = 0xE5;    if (a & 0x08 && c >= 'A' && c <= 'Z') c += 0x20;    *p++ = c;  }  if (dir[8] != ' ') {    /* Convert file name (extension) */    *p++ = '.';    for (n = 8; n < 11; n++) {      c = dir[n];      if (c == ' ') break;      if (a & 0x10 && c >= 'A' && c <= 'Z') c += 0x20;      *p++ = c;    }  }  *p = '\0';  finfo->fattrib = dir[DIR_Attr];         /* Attribute */  finfo->fsize = LD_U32(&dir[DIR_FileSize]);  /* Size */  finfo->fdate = LD_U16(&dir[DIR_WrtDate]);   /* Date */  finfo->ftime = LD_U16(&dir[DIR_WrtTime]);   /* Time */}#endif /* _FS_MINIMIZE <= 1 *//*-----------------------------------------------------------------------*//* Pick a paragraph and create the name in format of directory entry     *//*-----------------------------------------------------------------------*/staticchar make_dirfile (     /* 1: error - detected an invalid format, '\0'or'/': next character */    const char **path,    /* Pointer to the file path pointer */    char *dirname     /* Pointer to directory name buffer {Name(8), Ext(3), NT flag(1)} */    ){  U8 n, t, c, a, b;  memset(dirname, ' ', 8+3);  /* Fill buffer with spaces */  a = 0; b = 0x18;          /* NT flag */  n = 0; t = 8;  for (;;) {    c = *(*path)++;    if (c == '\0' || c == '/') {    /* Reached to end of str or directory separator */      if (n == 0) break;      dirname[11] = _USE_NTFLAG ? (a & b) : 0;      return c;    }    if (c <= ' ' || c == 0x7F) break;   /* Reject invisible chars */    if (c == '.') {      if (!(a & 1) && n >= 1 && n <= 8) { /* Enter extension part */        n = 8; t = 11; continue;      }      break;    }    if (_USE_SJIS &&        ((c >= 0x81 && c <= 0x9F) ||  /* Accept S-JIS code */         (c >= 0xE0 && c <= 0xFC))) {      if (n == 0 && c == 0xE5)    /* Change heading \xE5 to \x05 */        c = 0x05;      a ^= 1; goto md_l2;    }    if (c == '"') break;        /* Reject " */    if (c <= ')') goto md_l1;     /* Accept ! # $ % & ' ( ) */    if (c <= ',') break;        /* Reject * + , */    if (c <= '9') goto md_l1;     /* Accept - 0-9 */    if (c <= '?') break;        /* Reject : ; < = > ? */    if (!(a & 1)) { /* These checks are not applied to S-JIS 2nd byte */      if (c == '|') break;      /* Reject | */      if (c >= '[' && c <= ']') break;/* Reject [ \ ] */      if (_USE_NTFLAG && c >= 'A' && c <= 'Z')        (t == 8) ? (b &= ~0x08) : (b &= ~0x10);      if (c >= 'a' && c <= 'z') {   /* Convert to upper case */        c -= 0x20;        if (_USE_NTFLAG) (t == 8) ? (a |= 0x08) : (a |= 0x10);      }    }md_l1:    a &= ~1;md_l2:    if (n >= t) break;    dirname[n++] = c;  }  return 1;}/*-----------------------------------------------------------------------*//* Trace a file path                                                     *//*-----------------------------------------------------------------------*/staticFRESULT trace_path (  /* FR_OK(0): successful, !=0: error code */    DIR *dirobj,    /* Pointer to directory object to return last directory */    char *fn,     /* Pointer to last segment name to return {file(8),ext(3),attr(1)} */    const char *path, /* Full-path string to trace a file or directory */    U8 **dir      /* Directory pointer in Win[] to retutn */    ){  U32 clust;  char ds;  U8 *dptr = NULL;  FATFS *fs = dirobj->fs; /* Get logical drive from the given DIR structure */  /* Initialize directory object */  clust = fs->dirbase;  if (fs->fs_type == FS_FAT32) {    dirobj->clust = dirobj->sclust = clust;    dirobj->sect = clust2sect(fs, clust);  } else {    dirobj->clust = dirobj->sclust = 0;    dirobj->sect = clust;  }  dirobj->index = 0;  if (*path == '\0') {          /* Null path means the root directory */    *dir = NULL; return FR_OK;  }  for (;;) {    ds = make_dirfile(&path, fn);     /* Get a paragraph into fn[] */    if (ds == 1) return FR_INVALID_NAME;    for (;;) {      if (!move_window(fs, dirobj->sect)) return FR_RW_ERROR;      dptr = &fs->win[(dirobj->index & ((S_SIZ - 1) / 32)) * 32]; /* Pointer to the directory entry */      if (dptr[DIR_Name] == 0)            /* Has it reached to end of dir? */        return !ds ? FR_NO_FILE : FR_NO_PATH;      if (dptr[DIR_Name] != 0xE5            /* Matched? */          && !(dptr[DIR_Attr] & AM_VOL)          && !memcmp(&dptr[DIR_Name], fn, 8+3) ) break;      if (!next_dir_entry(dirobj))          /* Next directory pointer */        return !ds ? FR_NO_FILE : FR_NO_PATH;    }    if (!ds) { *dir = dptr; return FR_OK; }       /* Matched with end of path */    if (!(dptr[DIR_Attr] & AM_DIR)) return FR_NO_PATH;  /* Cannot trace because it is a file */    clust = ((U32)LD_U16(&dptr[DIR_FstClusHI]) << 16) | LD_U16(&dptr[DIR_FstClusLO]); /* Get cluster# of the directory */    dirobj->clust = dirobj->sclust = clust;       /* Restart scanning at the new directory */    dirobj->sect = clust2sect(fs, clust);    dirobj->index = 2;  }}/*-----------------------------------------------------------------------*//* Reserve a directory entry                                             *//*-----------------------------------------------------------------------*/#if !_FS_READONLYstaticFRESULT reserve_direntry (  /* FR_OK: successful, FR_DENIED: no free entry, FR_RW_ERROR: a disk error occured */    DIR *dirobj,      /* Target directory to create new entry */    U8 **dir        /* Pointer to pointer to created entry to retutn */    ){  U32 clust, sector;  U8 c, n, *dptr;  FATFS *fs = dirobj->fs;  /* Re-initialize directory object */  clust = dirobj->sclust;  if (clust) {  /* Dyanmic directory table */    dirobj->clust = clust;    dirobj->sect = clust2sect(fs, clust);  } else {    /* Static directory table */    dirobj->sect = fs->dirbase;  }  dirobj->index = 0;  do {    if (!move_window(fs, dirobj->sect)) return FR_RW_ERROR;    dptr = &fs->win[(dirobj->index & ((S_SIZ - 1) / 32)) * 32]; /* Pointer to the directory entry */    c = dptr[DIR_Name];    if (c == 0 || c == 0xE5) {      /* Found an empty entry! */      *dir = dptr; return FR_OK;    }  } while (next_dir_entry(dirobj));       /* Next directory pointer */  /* Reached to end of the directory table */  /* Abort when static table or could not stretch dynamic table */  if (!clust || !(clust = create_chain(fs, dirobj->clust))) return FR_DENIED;  if (clust == 1 || !move_window(fs, 0)) return FR_RW_ERROR;  fs->winsect = sector = clust2sect(fs, clust);   /* Cleanup the expanded table */  memset(fs->win, 0, S_SIZ);  for (n = fs->sects_clust; n; n--) {    if (diskWrite(fs->drive, fs->win, sector, 1) != DRESULT_OK)      return FR_RW_ERROR;    sector++;  }  fs->winflag = 1;  *dir = fs->win;  return FR_OK;}#endif /* !_FS_READONLY *//*-----------------------------------------------------------------------*//* Load boot record and check if it is a FAT boot record                 *//*-----------------------------------------------------------------------*/staticU8 check_fs (   /* 0:The FAT boot record, 1:Valid boot record but not an FAT, 2:Not a boot record or error */    FATFS *fs,    /* File system object */    U32 sect    /* Sector# (lba) to check if it is a FAT boot record or not */    ){  if (diskRead(fs->drive, fs->win, sect, 1) != DRESULT_OK)  /* Load boot record */    return 2;  if (LD_U16(&fs->win[BS_55AA]) != 0xAA55)        /* Check record signature (always offset 510) */    return 2;  if (!memcmp(&fs->win[BS_FilSysType], "FAT", 3))     /* Check FAT signature */    return 0;  if (!memcmp(&fs->win[BS_FilSysType32], "FAT32", 5) && !(fs->win[BPB_ExtFlags] & 0x80))    return 0;  return 1;}/*-----------------------------------------------------------------------*//* Make sure that the file system is valid                               *//*-----------------------------------------------------------------------*/staticFRESULT auto_mount (    /* FR_OK(0): successful, !=0: any error occured */    const char **path,    /* Pointer to pointer to the path name (drive number) */    FATFS **rfs,      /* Pointer to pointer to the found file system object */    U8 chk_wp       /* !=0: Check media write protection for wrinting fuctions */    ){  U8 drv, fmt, *tbl;  DSTATUS stat;  U32 bootsect, fatsize, totalsect, maxclust;  const char *p = *path;  FATFS *fs;  /* Get drive number from the path name */  while (*p == ' ') p++;    /* Strip leading spaces */  drv = p[0] - '0';     /* Is there a drive number? */  if (drv <= 9 && p[1] == ':')    p += 2;     /* Found a drive number, get and strip it */  else    drv = 0;    /* No drive number is given, select drive 0 in default */  if (*p == '/') p++; /* Strip heading slash */  *path = p;      /* Return pointer to the path name */  /* Check if the drive number is valid or not */  if (drv >= _DRIVES) return FR_INVALID_DRIVE;  /* Is the drive number valid? */  if (!(fs = FatFs[drv])) return FR_NOT_ENABLED;  /* Is the file system object registered? */  *rfs = fs;      /* Returen pointer to the corresponding file system object */  /* Check if the logical drive has been mounted or not */  if (fs->fs_type) {    stat = diskStatus(fs->drive);    if (!(stat & DSTATUS_NOINIT)) {       /* If the physical drive is kept initialized */#if !_FS_READONLY      if (chk_wp && (stat & DSTATUS_PROTECT)) /* Check write protection if needed */        return FR_WRITE_PROTECTED;#endif      return FR_OK;           /* The file system object is valid */    }  }  /* The logical drive has not been mounted, following code attempts to mount the logical drive */  memset(fs, 0, sizeof(FATFS));   /* Clean-up the file system object */  fs->drive = LD2PD(drv);       /* Bind the logical drive and a physical drive */  stat = diskInitialize (fs->drive);  /* Initialize low level disk I/O layer */  if (stat & DSTATUS_NOINIT)        /* Check if the drive is ready */    return FR_NOT_READY;#if S_MAX_SIZ > 512           /* Check disk sector size */  if (diskIoctl(drv, IOCTL_GET_SECTOR_SIZE, &S_SIZ) != DRESULT_OK || S_SIZ > S_MAX_SIZ)    return FR_NO_FILESYSTEM;#endif#if !_FS_READONLY  if (chk_wp && (stat & DSTATUS_PROTECT)) /* Check write protection if needed */    return FR_WRITE_PROTECTED;#endif  /* Search FAT partition on the drive */  fmt = check_fs(fs, bootsect = 0); /* Check sector 0 as an SFD format */  if (fmt == 1) {           /* Not a FAT boot record, it may be patitioned */    /* Check a partition listed in top of the partition table */    tbl = &fs->win[MBR_Table + LD2PT(drv) * 16];  /* Partition table */    if (tbl[4]) {               /* Is the partition existing? */      bootsect = LD_U32(&tbl[8]);     /* Partition offset in LBA */      fmt = check_fs(fs, bootsect);     /* Check the partition */    }  }  if (fmt || LD_U16(&fs->win[BPB_BytsPerSec]) != S_SIZ) /* No valid FAT patition is found */    return FR_NO_FILESYSTEM;  /* Initialize the file system object */  fatsize = LD_U16(&fs->win[BPB_FATSz16]);      /* Number of sectors per FAT */  if (!fatsize) fatsize = LD_U32(&fs->win[BPB_FATSz32]);  fs->sects_fat = fatsize;  fs->n_fats = fs->win[BPB_NumFATs];          /* Number of FAT copies */  fatsize *= fs->n_fats;                /* (Number of sectors in FAT area) */  fs->fatbase = bootsect + LD_U16(&fs->win[BPB_RsvdSecCnt]); /* FAT start sector (lba) */  fs->sects_clust = fs->win[BPB_SecPerClus];      /* Number of sectors per cluster */  fs->n_rootdir = LD_U16(&fs->win[BPB_RootEntCnt]); /* Nmuber of root directory entries */  totalsect = LD_U16(&fs->win[BPB_TotSec16]);   /* Number of sectors on the file system */  if (!totalsect) totalsect = LD_U32(&fs->win[BPB_TotSec32]);#if 0  //  //  Patch from David Johnson  //  sectsize = LD_U16(&fs->win[BPB_BytsPerSec]);  rootdirsect = ((fs->n_rootdir * 32) + (sectsize - 1)) / sectsize;  if ((((fs->n_rootdir * 32) + (sectsize - 1)) % sectsize) > 0)    rootdirsect++;  datasec = totalsect - (LD_U16(&fs->win[BPB_RsvdSecCnt]) + fatsize + rootdirsect);  clustercnt = datasec / fs->sects_clust;  fs->max_clust = clustercnt + 1;  fmt = FS_FAT12;  if (clustercnt >= 4085) fmt = FS_FAT16;  if (clustercnt >= 65525) fmt = FS_FAT32;#else  fs->max_clust = maxclust = (totalsect       /* Last cluster# + 1 */      - LD_U16(&fs->win[BPB_RsvdSecCnt]) - fatsize - fs->n_rootdir / (S_SIZ/32)      ) / fs->sects_clust + 2;  fmt = FS_FAT12;                   /* Determine the FAT sub type */  if (maxclust > 0xFF7) fmt = FS_FAT16;  if (maxclust > 0xFFF7) fmt = FS_FAT32;#endif  fs->fs_type = fmt;  if (fmt == FS_FAT32)    fs->dirbase = LD_U32(&fs->win[BPB_RootClus]); /* Root directory start cluster */  else    fs->dirbase = fs->fatbase + fatsize;      /* Root directory start sector (lba) */  fs->database = fs->fatbase + fatsize + fs->n_rootdir / (S_SIZ/32);  /* Data start sector (lba) */#if !_FS_READONLY  fs->free_clust = 0xFFFFFFFF;#if _USE_FSINFO  /* Load fsinfo sector if needed */  if (fmt == FS_FAT32) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩专区欧美专区| 久久综合狠狠综合久久综合88| 午夜精品福利一区二区三区蜜桃| 中文字幕制服丝袜一区二区三区 | 欧美精品第一页| 国产麻豆精品视频| 午夜久久久久久| 亚洲成人免费在线| 国产精品久久久久影院色老大| 一区二区三区四区av| 国产精品久久免费看| 国产区在线观看成人精品 | 欧美人动与zoxxxx乱| 99re成人在线| 亚洲猫色日本管| 国产精品久久影院| 国产精品视频你懂的| 国产欧美日韩视频一区二区| 综合色中文字幕| 成人免费在线播放视频| 国产午夜精品一区二区三区视频| 精品久久国产老人久久综合| 亚洲精品成人a在线观看| 亚洲天堂成人网| 亚洲综合一区二区| 免费一级片91| 国产精品456露脸| 99re这里都是精品| 6080午夜不卡| 国产三级精品视频| 一区二区三区中文字幕电影| 亚洲成人午夜电影| 激情都市一区二区| 一本一本大道香蕉久在线精品| 一本久道久久综合中文字幕| 欧美肥妇free| 日韩一区在线播放| 美女在线视频一区| 粉嫩av一区二区三区| 欧美日韩色一区| 国产精品你懂的在线欣赏| 亚洲大片精品永久免费| 国产自产视频一区二区三区| 99热精品国产| 精品久久国产字幕高潮| 一区二区三区丝袜| 成人综合激情网| 日韩欧美一区二区免费| 一区二区三区免费看视频| 国产.欧美.日韩| 欧美一区二区三区的| 一个色妞综合视频在线观看| 国产成人午夜精品影院观看视频 | 欧美日韩一区二区三区免费看| 久久久99久久| 国产v日产∨综合v精品视频| 欧美不卡在线视频| 午夜一区二区三区视频| 色视频欧美一区二区三区| 国产日产欧美精品一区二区三区| 久久国内精品视频| 日韩欧美一级精品久久| 亚洲一区二区三区三| 972aa.com艺术欧美| 亚洲欧洲在线观看av| 成人午夜视频在线| 国产精品久久久久久久久久久免费看| 久久精品国产99国产精品| 欧美一区二区日韩一区二区| 视频一区视频二区中文字幕| 精品视频1区2区3区| 午夜精品福利一区二区三区av | 1024成人网| 欧美日韩一区二区三区高清| 日本中文字幕一区二区视频| 欧美成va人片在线观看| 不卡在线视频中文字幕| 亚洲麻豆国产自偷在线| 欧美精品xxxxbbbb| 国产真实乱对白精彩久久| 国产精品人成在线观看免费| 91欧美一区二区| 亚洲不卡在线观看| 日韩一区和二区| 成人手机电影网| 午夜精品福利久久久| 精品成人在线观看| 99久久精品国产一区二区三区 | 亚洲三级在线看| 欧美妇女性影城| av高清久久久| 免费人成黄页网站在线一区二区| 国产亚洲精品aa午夜观看| 91女人视频在线观看| 精品一区二区三区在线观看国产 | 91福利在线看| 粉嫩av亚洲一区二区图片| 天天操天天综合网| 亚洲美女视频在线| 国产精品久久久久久久久久久免费看 | 国产一区美女在线| 亚洲va国产va欧美va观看| 欧美经典一区二区| 日韩欧美一区二区三区在线| 欧美午夜免费电影| 色婷婷久久99综合精品jk白丝| 欧美精品aⅴ在线视频| 91丨九色丨国产丨porny| 国产一区二区三区综合| 男女性色大片免费观看一区二区| 一区二区三区四区不卡视频| 亚洲男同1069视频| 国产精品久久久久久福利一牛影视 | 国产成人在线免费观看| 性感美女极品91精品| 一区二区三区在线观看欧美 | 18涩涩午夜精品.www| 中文字幕色av一区二区三区| 久久久久国产精品麻豆| 精品91自产拍在线观看一区| 日韩欧美不卡在线观看视频| 日韩欧美精品三级| 精品成人在线观看| 国产精品色一区二区三区| 国产精品欧美久久久久无广告 | 蜜臂av日日欢夜夜爽一区| 人妖欧美一区二区| 久久99精品一区二区三区| 国产一区二区三区久久悠悠色av| 久久er精品视频| 国产一区二区在线看| 国产99久久久国产精品潘金| av一本久道久久综合久久鬼色| 91丨九色丨蝌蚪丨老版| 欧美精品日韩一区| 精品久久国产老人久久综合| 中文字幕日韩一区| 日韩精品电影在线观看| 国产凹凸在线观看一区二区| 色就色 综合激情| 日韩女优av电影| 国产精品久久久99| 亚洲成av人综合在线观看| 国产一区二区三区四区五区入口| 成人av电影免费在线播放| 欧美精品99久久久**| 国产日韩欧美麻豆| 日本在线不卡一区| 99免费精品在线| 2023国产精品| 亚洲成人一区在线| 99久精品国产| 2021国产精品久久精品 | 亚洲图片欧美色图| 国产成人aaa| 精品国产髙清在线看国产毛片| 日韩一区日韩二区| 成人精品在线视频观看| 日韩午夜电影av| 日韩综合小视频| 91传媒视频在线播放| 欧美激情一区三区| 伦理电影国产精品| 91精品国产黑色紧身裤美女| 亚洲午夜久久久| 色婷婷狠狠综合| 中文字幕免费一区| youjizz久久| 国产精品九色蝌蚪自拍| 丰满少妇在线播放bd日韩电影| 日韩精品一区二区三区视频| 日本不卡一二三| 日韩精品在线一区| 精品在线免费观看| 天天综合网 天天综合色| 欧美疯狂性受xxxxx喷水图片| 亚洲高清免费观看| 制服丝袜日韩国产| 国内精品久久久久影院色| 国产色综合一区| 成人高清免费观看| 国产精品久久免费看| 91豆麻精品91久久久久久| 午夜精品福利视频网站| 日韩欧美黄色影院| 99久久er热在这里只有精品15 | 欧美日韩一本到| 极品少妇一区二区| 中文字幕日本乱码精品影院| 欧美日韩综合色| 激情综合色播五月| 亚洲三级在线播放| 欧美高清www午色夜在线视频| 麻豆精品国产传媒mv男同| 中文无字幕一区二区三区| 色菇凉天天综合网| 国产精品18久久久久久久久久久久| 亚洲视频图片小说| 久久综合九色欧美综合狠狠| 欧美午夜精品久久久|