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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fat.c

?? fat16
?? C
?? 第 1 頁 / 共 5 頁
字號:
    }
    if (fat_is_fat16 == TRUE)
    {
      i = (cluster * 2) & 0x1FF;
      ((Byte *)&cluster)[1] = fat_buf_sector[i];
      fat_buf_sector[i++] = 0;
      ((Byte *)&cluster)[0] = fat_buf_sector[i];
      fat_buf_sector[i] = 0;
      end = (cluster == 0xFFFF);
    }
    else
    {
      i = (cluster * 3 / 2) & 0x1FF;
      if ((cluster & 0x01) == 0)
      {
        ((Byte *)&cluster)[1] = fat_buf_sector[i];
        fat_buf_sector[i] = 0x00;
        i++;
        if (i == 512)
        {
          fat_update_fat_sector(sector_number);
          sector_number++;
          fat_load_sector(fat_ptr_fats + sector_number);
          i = 0;
        }
        ((Byte *)&cluster)[0] = fat_buf_sector[i] & 0x0F;
        fat_buf_sector[i] &= 0xF0;
      }
      else
      {
        cluster = (fat_buf_sector[i] & 0xF0) >> 4;
        fat_buf_sector[i] &=  0x0F;
        i++;
        if (i == 512)
        {
          fat_update_fat_sector(sector_number);
          sector_number++;
          fat_load_sector(fat_ptr_fats + sector_number);
          i = 0;
        }
        cluster += (fat_buf_sector[i] << 4);
        fat_buf_sector[i] = 0x00;
      }
      end = (cluster == 0xFFF);

    }

  }
  while (!end);
  fat_update_fat_sector(sector_number);
}


/*F**************************************************************************
* NAME: fat_refresh_dir_file_info
*----------------------------------------------------------------------------
* PARAMS:
*    
* return:
*   
*----------------------------------------------------------------------------
* PURPOSE:
*   Reconstruct the file directory list and seek to the file pointed by
*   fat_dir_list_index
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   
*----------------------------------------------------------------------------
* REQUIREMENTS:
*   
*****************************************************************************/
void fat_refresh_dir_file_info (Byte id)
{
  /* update fat_dir_current_sect with directory starting value */
  if (dir_is_root)
  {
    fat_dir_current_sect = fat_ptr_rdir;                          
  }
  else
  {
    fat_dir_current_sect = (((Uint32)(dclusters[0].cluster)) * fat_cluster_size)
                           + fat_ptr_data;
  }

  fat_get_dir_file_list(id);                /* Refresh file list */
  fat_seek_entry_record();                  /* Re-fetch the entry <-> fat_dir_list_index */
  fat_get_dir_entry(&fat_cache.current);    /* update current file info */  
}


/*F**************************************************************************
* NAME: fat_fdelete
*----------------------------------------------------------------------------
* PARAMS:
*    
* return:
*   - DEL_RET_OK:           delete done & dir is not empty
*   - DEL_RET_NO_MORE_FILE: dir is empty after delete or not
*   - DEL_RET_ERROR_DIR:    dir can not be deleted
*----------------------------------------------------------------------------
* PURPOSE:
*   Delete a selected file, in the root directory or in a sub-dir
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   fat_frefresh may be called after fdelete to rebuilt the dir content list
*----------------------------------------------------------------------------
* REQUIREMENTS:
*   File variables must be updated (fat_dclust_byte_count, entry record, ...)
*****************************************************************************/
Byte fat_fdelete (void)
{
Uint16 i;
Uint32 dir_sector; 

  if (((dir_is_root == TRUE) && (fat_dir_list_last == 0)) ||     
      ((dir_is_root == FALSE) && (fat_dir_list_last == 2)))      /* . and .. directory */
    return DEL_RET_NO_MORE_FILE;            /* directory already empty */

  if (fat_check_ext() != FILE_DIR)
  {
    fat_seek_entry_record();                /* Re-fetch the entry <-> fat_dir_list_index */
    Hard_read_close();

    dir_sector = fat_dir_current_sect;
    fat_root_entry = fat_dir_current_offs / 32; /* fat_dir_current_offs give the offset in byte starting */
    fat_file_size.l = fat_cache.current.size.l; /* at the beginning of directory */

    fat_load_sector(dir_sector);            /* Load directory sector  */
    i = (fat_root_entry % 16) * 32 ;        /* position of entry in the sector */
    while (fat_buf_sector[i + 11] == ATTR_LFN_ENTRY)
    {
      /* mark file as deleted */
      fat_buf_sector[i] = FILE_DELETED;
      i += 32;

      if (!dir_is_root)
        fat_dclust_byte_count += 32;

      if (i == SECTOR_SIZE)
      {
        Hard_write_open(dir_sector);
        for (i = 0; i < SECTOR_SIZE; i++)
          Hard_write_byte(fat_buf_sector[i]);
        Hard_write_close();

        if (!dir_is_root)                   /* sub-directory */
        {
          /* check if we are at the end of a cluster */
          if ((((Byte*)&fat_dclust_byte_count)[1] == 0x00) &&
            ((((Byte*)&fat_dclust_byte_count)[0] & fat_cluster_mask) == 0x00))
          {
            /* extract if necessary the next cluster from the allocation list */
            if (dclusters[fat_dchain_index].number == fat_dchain_nb_clust)
            { /* new fragment */
              fat_dchain_index++;
              fat_dchain_nb_clust = 1;
              dir_sector = (fat_ptr_data + ((Uint32)(dclusters[fat_dchain_index].cluster) * fat_cluster_size));
            }
            else
            {
              fat_dchain_nb_clust++;        /* one more cluster read */
              dir_sector++;                 /* Contiguous cluster    */
            }
          }
          else
          { /* Don't change the cluster */
            dir_sector++;
          }
        }
        else
        { /* Root directory is linear */
          dir_sector++;
        }
        fat_load_sector(dir_sector);
        i = 0;
      }
    }
    fat_buf_sector[i] = FILE_DELETED;
    Hard_write_open(dir_sector);
    for (i = 0; i < SECTOR_SIZE; i++)
      Hard_write_byte(fat_buf_sector[i]);
    Hard_write_close();

    /* FAT update */
    fat_fclust_byte_count = 0;              /* byte 0 of cluster */
    /* reset the allocation list variable */
    fat_fchain_index = 0;
    fat_fchain_nb_clust = 0;                /* start on first contiguous cl */
    /* get file allocation list */
    fat_get_clusters(&fclusters, MAX_FILE_FRAGMENT_NUMBER);
    /* Clear fat cluster */
    fat_clear_fat();
    /* NF correction */
    for (i = 0; i < 256; i++)
      gl_buffer[i] = 0x00;
    fat_dir_list_last--;                    /* one file deleted */

    if (((dir_is_root == TRUE) && (fat_dir_list_last == 0)) ||     
        ((dir_is_root == FALSE) && (fat_dir_list_last == 2)))      /* . and .. directory */
      return DEL_RET_NO_MORE_FILE;          /* directory now empty */

    if (fat_dir_list_index == fat_dir_list_last)
    {
      fat_dir_list_index--;                 /* in case of last file delete */
    }
    return DEL_RET_OK;
  }
  else
  {
    return DEL_RET_ERROR_DIR;
  }
}

/*F**************************************************************************
* NAME: fat_free_space
*----------------------------------------------------------------------------
* PARAMS:
*   
* return:
*   number of free cluster
*----------------------------------------------------------------------------
* PURPOSE:
*   Get free space   
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
fat_st_free_space fat_free_space(void)
{
Uint32 temp;
Uint32 i;
Uint16 cluster;
bdata bit fat12_parity;
xdata fat_st_free_space free_space;

  Hard_read_open(fat_ptr_fats);
  temp = 2;
  if (fat_is_fat16)     /* FAT16 management */
  {
    for (i = 0; i < fat_count_of_clusters; i++)
    {
      ((Byte*)&cluster)[1] = Hard_read_byte();
      ((Byte*)&cluster)[0] = Hard_read_byte();
      if (cluster == 0x0000)
        temp++;
    }
    Hard_read_close();
    free_space.free_cluster = temp;
    free_space.cluster_size = fat_cluster_size; 
    return free_space;
  }
  else
  {
    fat12_parity = 0;
    for (i = 0; i < fat_count_of_clusters; i++)
    {
      if (fat12_parity == 0)
      {
        ((Byte*)&cluster)[1] = Hard_read_byte();
        ((Byte*)&cluster)[0] = Hard_read_byte();
        fat12_parity = 1;
      }
      else
      {
        cluster = (cluster & 0xF000) >> 12;
        cluster += (Hard_read_byte() << 4);
        fat12_parity = 0;
      }
      if (!(cluster & 0x0FFF))
        temp++;
    }
    Hard_read_close();
    free_space.free_cluster = temp;
    free_space.cluster_size = fat_cluster_size; 
    return free_space;
  }
}


/*F**************************************************************************
* NAME: fat_read_cluster12
*----------------------------------------------------------------------------
* PARAMS:
*   init : initialize the parity bit or not
* return:
*   FAT12 cluster value
*----------------------------------------------------------------------------
* PURPOSE:
*   Read in fat12 file system a cluster value   
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
Uint16 fat_read_cluster (bit init)
{
static bit fat12_parity;
static idata Uint16 cluster;

  if (fat_is_fat16)
  {
    ((Byte*)&cluster)[1] = Hard_read_byte();
    ((Byte*)&cluster)[0] = Hard_read_byte();
    return cluster;
  }

  if (init)
  {
    fat12_parity = 0;
    cluster = 0;
  }

  if (fat12_parity == 0)
  {
    ((Byte*)&cluster)[1] = Hard_read_byte();
    ((Byte*)&cluster)[0] = Hard_read_byte();
    fat12_parity = 1;
    return (cluster & 0x0FFF);
  }
  else
  {
    cluster = (cluster & 0xF000) >> 12;
    cluster += (Hard_read_byte() << 4);
    fat12_parity = 0;
    return (cluster);
  }
}


/*F**************************************************************************
* NAME: fat_set_clusters
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   - OK: allocation done
*   - KO: allocation cannot be done : no free cluster
*----------------------------------------------------------------------------
* PURPOSE:
*   Prepare a list of the free clusters:
*     chain[n].cluster contains the starting cluster number of a fragment
*     chain[n].number contains the number of contiguous clusters in fragment
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   Free cluster list is limited by the nb_frag parameter.
*   If memory is too much fragmented, created file may be limited in size.
*   Last list item always has single cluster
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
bit fat_set_clusters (void)
{
bit     cluster_free;
Uint16  cluster;

  cluster = 0;
  cluster_free = FALSE;
  fat_last_clust_index = 0;
  Hard_read_open(fat_ptr_fats);

  /* search the first free cluster in fat */
  fat_read_cluster(1);
  fat_read_cluster(0);
  do                                   

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品久久久精品美女| 欧美人妇做爰xxxⅹ性高电影| 成人精品视频一区二区三区| 色婷婷久久99综合精品jk白丝| 欧美亚州韩日在线看免费版国语版| 精品福利在线导航| 亚洲国产精品久久久男人的天堂| 国产91丝袜在线观看| 欧美一卡二卡三卡| 亚洲色大成网站www久久九九| 乱中年女人伦av一区二区| 91欧美激情一区二区三区成人| 亚洲精品一区二区三区在线观看| 亚洲曰韩产成在线| 99久久婷婷国产综合精品| www亚洲一区| 美日韩一区二区三区| 欧美久久久久久久久久| 亚洲美女视频在线观看| av不卡在线观看| 国产免费成人在线视频| 国产一区二区三区美女| 日韩欧美一级在线播放| 免费人成网站在线观看欧美高清| 欧美日韩在线播放一区| 亚洲一区欧美一区| 一本到不卡精品视频在线观看 | 国产欧美日韩亚州综合| 久久国产福利国产秒拍| 欧美一三区三区四区免费在线看| 亚洲综合男人的天堂| 日本久久一区二区| 亚洲精品欧美二区三区中文字幕| av亚洲精华国产精华| 国产精品二三区| 色老头久久综合| 亚洲尤物视频在线| 91超碰这里只有精品国产| 午夜精品久久久久久久久久| 日本不卡视频一二三区| 亚洲精品欧美激情| 一区二区三区小说| 精品系列免费在线观看| 国产精品乱人伦一区二区| 国产成人av福利| 中文字幕一区二区5566日韩| 懂色中文一区二区在线播放| 国产精品丝袜黑色高跟| 91在线观看一区二区| 亚洲精品免费一二三区| 在线播放亚洲一区| 精品一区二区免费看| 中文字幕高清不卡| 欧美亚洲日本国产| 蜜桃一区二区三区四区| 久久精品人人做人人综合 | 91精品一区二区三区久久久久久| 亚洲国产日韩a在线播放| 欧美一级片免费看| 国产精品一区二区在线观看不卡 | 午夜在线成人av| 欧美一区在线视频| 成人一区在线观看| 性做久久久久久免费观看| 欧美一级二级三级蜜桃| 国产91综合网| 日韩经典一区二区| 中文字幕久久午夜不卡| 欧美伦理影视网| 国产91清纯白嫩初高中在线观看| 亚洲精品免费看| 久久婷婷久久一区二区三区| 色94色欧美sute亚洲线路一久| 97se亚洲国产综合自在线观| 亚洲午夜视频在线| 久久精品人人爽人人爽| 精品视频一区二区三区免费| 国产一区二区三区免费播放| 亚洲一区二区高清| 国产性天天综合网| 日韩美女视频一区二区在线观看| av在线这里只有精品| 午夜精品一区在线观看| 国产精品成人免费在线| 日韩你懂的电影在线观看| 99re成人在线| 国产一区二区三区电影在线观看| 一个色综合网站| 国产精品视频一二| 欧美大片在线观看一区二区| 在线观看亚洲一区| 不卡免费追剧大全电视剧网站| 麻豆成人av在线| 亚洲福利国产精品| 亚洲色图欧洲色图婷婷| 国产亚洲短视频| 精品欧美乱码久久久久久 | 亚洲曰韩产成在线| 国产精品青草综合久久久久99| 91精品欧美一区二区三区综合在| 99久久综合国产精品| 国产福利一区二区三区| 六月丁香综合在线视频| 亚洲va国产va欧美va观看| 亚洲乱码日产精品bd | 欧美一级精品在线| 在线观看亚洲a| 在线一区二区三区四区五区 | 亚洲地区一二三色| 亚洲女性喷水在线观看一区| 国产精品视频第一区| 久久久久久麻豆| 久久综合久久综合亚洲| 欧美一区中文字幕| 欧美tickle裸体挠脚心vk| 日韩一区二区在线看| 91精品国产高清一区二区三区| 欧美色中文字幕| 欧美日韩黄色影视| 91精品久久久久久久91蜜桃| 欧美久久一二三四区| 51精品久久久久久久蜜臀| 欧美一区二区二区| 日韩一区二区免费高清| 欧美大片日本大片免费观看| 精品乱码亚洲一区二区不卡| 欧美精品一区二区不卡| 欧美国产精品一区二区| 136国产福利精品导航| 中文字幕字幕中文在线中不卡视频| 国产精品乱码妇女bbbb| 一区二区三区在线高清| 日韩经典中文字幕一区| 久久精品99久久久| 风间由美一区二区av101| 99视频精品免费视频| 欧美日韩一区二区在线观看视频| 欧美日韩中文字幕精品| 欧美sm美女调教| 中文在线资源观看网站视频免费不卡| 国产精品美女久久久久久久网站| 国产精品久久久久永久免费观看 | 老司机精品视频线观看86| 精品一区二区在线视频| 国产美女视频91| 91麻豆成人久久精品二区三区| 欧美日韩精品专区| www国产精品av| 亚洲免费观看高清完整版在线| 亚洲444eee在线观看| 国产一区欧美二区| 色婷婷精品久久二区二区蜜臂av| 欧美亚洲动漫精品| 久久新电视剧免费观看| 尤物视频一区二区| 国产在线不卡一区| 欧美日韩国产综合草草| 欧美国产精品劲爆| 毛片av中文字幕一区二区| 91丨九色丨蝌蚪丨老版| 欧美成人a在线| 夜夜嗨av一区二区三区网页 | 日韩经典中文字幕一区| 成人激情小说网站| 91精品久久久久久久99蜜桃| 国产精品乱码一区二三区小蝌蚪| 日韩av在线播放中文字幕| 99精品国产99久久久久久白柏| 91精品中文字幕一区二区三区| 欧美国产欧美亚州国产日韩mv天天看完整| 一区二区三区久久久| 国产经典欧美精品| 欧美一区2区视频在线观看| 亚洲免费毛片网站| 成人免费三级在线| 精品精品国产高清a毛片牛牛| 又紧又大又爽精品一区二区| 国产一区二区精品久久99| 欧美挠脚心视频网站| 亚洲麻豆国产自偷在线| 高清在线成人网| 久久综合九色综合97婷婷| 亚洲超丰满肉感bbw| 99久久国产免费看| 国产无一区二区| 国产激情91久久精品导航| 宅男噜噜噜66一区二区66| 亚洲免费观看高清完整| 91一区二区三区在线播放| 国产精品免费视频一区| 粉嫩av一区二区三区| 久久免费的精品国产v∧| 久久精品国产精品亚洲红杏| 日韩一区二区三区三四区视频在线观看| 樱花影视一区二区| 在线一区二区三区四区五区| 亚洲激情综合网| 欧美午夜在线一二页| 亚欧色一区w666天堂| 欧美日韩的一区二区|