⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fat.c

📁 mp3播放器
💻 C
📖 第 1 页 / 共 4 页
字号:
		    if(!(FileData.wCurFDBNo & 0x0F))
		      flag = 0;
		  }
	    }
		else
		{
		  FileData.wCurFDBNo++;
		  if(!(FileData.wCurFDBNo & 0x0F))
		    flag = 0;
		}
	  }
      FileData.wCurFDBNo = 0;
      FileData.dwCurCluNo++;
	}
    //return KO;
  }
  else
  {
    //FAT16
    FileData.wCurFDBNo = 0;
	for(;FileData.wCurFDBNo < (U16)FileData.RootDirNum;)
	{
	  if(!flag)
	  {
	    DMA_load_sector(CFatData.dwRootStartlba + (FileData.wCurFDBNo / CFatData.bFDBNumInSec), 0x06);
		flag = 1;
	  }
	  if((((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Attribute != 0x0F)
        &&((((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Attribute & ARCHIVE_DIR) == ARCHIVE_DIR))
	  {
		if((((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Extension[0] == (S8)' ')
		  &&(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Extension[1] == (S8)' ')
		  &&(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Extension[2] == (S8)' ')
		  &&(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[0] == (S8)'F')
		  &&(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[1] == (S8)'J')
          &&(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[2] == (S8)' ')
		  &&(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[3] == (S8)' ')
		  &&(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[4] == (S8)' ')
		  &&(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[5] == (S8)' ')
		  &&(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[6] == (S8)' ')
		  &&(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[7] == (S8)' '))
		{
		  SendChar(0xB6);
		  return;
	    }
		else
		{
		  FileData.wCurFDBNo++;
		  if(!(FileData.wCurFDBNo & 0x0F))
		    flag = 0;
		}
	  }
	  else
	  {
	    FileData.wCurFDBNo++;
		if(!(FileData.wCurFDBNo & 0x0F))
		  flag = 0;
	  }
    }
  }
  SendChar(0xB7);

  //在FAT中搜索未分配的簇
  varAl.TmpLong = 2;
  flag = 0;
  for(;;)
  {
    if(!flag)
	{
      p = (varAl.TmpLong << FATTab.bShiftBits)/ (U32)CFatData.wBytesPerSec;
      p += CFatData.dwFatTabStartlba;
      position = p;
      DMA_load_sector(p, 0x06);
	  flag = 1;
	}
	p = CharToLong((U8 xdata *)(0xF000 +((U16)(varAl.TmpLong << FATTab.bShiftBits)&(U16)0x01FF)))& CFatData.dwMask;
	if(!p)
	{
	  if(CFatData.fFAT32)
        LongToChar((U8 xdata *)(0xF000 +((U16)(varAl.TmpLong << FATTab.bShiftBits)&(U16)0x01FF)), CFatData.dwMask);
	  else
	    IntToChar((U8 xdata *)(0xF000 +((U16)(varAl.TmpLong << FATTab.bShiftBits)&(U16)0x01FF)), CFatData.dwMask);
	  DMA_write_sector(position, 0x06);
	  break;
    }
	else
	{
	  varAl.TmpLong++;
	  if(varAl.TmpLong > (0xFFFFFFFE & CFatData.dwMask))
	  {
	    SendChar(0xA5);
		return;
      }
	  else
	  {
	    if(!((U16)(varAl.TmpLong << FATTab.bShiftBits)&(U16)0x01FF))
		  flag = 0;
	  }
	}
  }
  SendChar(0xA6);

  //在根目录中创建新的文件夹
  flag = 0;
  if(CFatData.fFAT32)
  {
    //FAT32
	FileData.dwCurCluNo = 0;
    FileData.wCurFDBNo = 0;
    for(;FileData.dwCurCluNo < FileData.RootDirNum;)
	{
      p = FileData.dwCurCluNo;
	  for(index = 0; index  < MAX_FILE_FRAGMENT_NUMBER; index++)
	  {
	    if(p < rootclusters[index].number)
	    {
	      p = rootclusters[index].cluster + p;
	      break;
		}
		else
		{
		  p -= rootclusters[index].number;
		}
	  }
	  p = CFatData.dwClu2Startlba + (p - 2)* (U32)CFatData.bSectorsPerClu;
      
	  for(;FileData.wCurFDBNo < (U16)CFatData.bSectorsPerClu * CFatData.wBytesPerSec / DIREntrySize;)
	  {
		if(!flag)
		{
		  position = p + FileData.wCurFDBNo * DIREntrySize / CFatData.wBytesPerSec;
		  DMA_load_sector(position, 0x06);
          flag = 1;
		}
        if((((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[0] == (S8)DIR_Unused)
		  ||(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[0] == (S8)DIR_Deleted))
	    {
          //在根目录中写入文件夹名
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Extension[0] = (S8)' ';
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Extension[1] = (S8)' ';
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Extension[2] = (S8)' ';
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[0] = (S8)'F';
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[1] = (S8)'J';
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[2] = (S8)' ';
          ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[3] = (S8)' ';
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[4] = (S8)' ';
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[5] = (S8)' ';
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[6] = (S8)' ';
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[7] = (S8)' ';
          ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Attribute = ARCHIVE_DIR;
          ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[0] = 0x08;
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[1] = 0x2A;
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[2] = 0x2E;
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[3] = 0x5A;
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[4] = 0x2D;
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[5] = 0x35;
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[6] = 0x39;
		  ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[7] = 0x35;
          ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FSClusHI = LE16((U16)(varAl.TmpLong >> 16));
          ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Time = 0x5A2E;
          ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Date = 0x352D;
          ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FSClusLO = LE16((U16)varAl.TmpLong);
          ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileSize = 0;
		  DMA_write_sector(position, 0x06);

		  //写子目录父目录索引, 并至少清除一簇
          p = CFatData.dwClu2Startlba + (varAl.TmpLong - 2)* (U32)CFatData.bSectorsPerClu;
          //DMA_load_sector(p, 0x06);
		  for(index = 0; index < CFatData.bSectorsPerClu; index++)
		  {
		    clear_DMA((U8 xdata *)0xF000);
			if(!index)
			{
              ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Extension[0] = (S8)' ';
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Extension[1] = (S8)' ';
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Extension[2] = (S8)' ';
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[0] = (S8)'.';
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[1] = (S8)' ';
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[2] = (S8)' ';
        	  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[3] = (S8)' ';
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[4] = (S8)' ';
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[5] = (S8)' ';
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[6] = (S8)' ';
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[7] = (S8)' ';
        	  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Attribute = ARCHIVE_DIR;
	          ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[0] = 0x08;
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[1] = 0x2A;
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[2] = 0x2E;
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[3] = 0x5A;
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[4] = 0x2D;
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[5] = 0x35;
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[6] = 0x39;
			  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[7] = 0x35;
	          ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FSClusHI = LE16((U16)(varAl.TmpLong >> 16));
              ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Time = 0x5A2E;
              ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Date = 0x352D;
    	      ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FSClusLO = LE16((U16)varAl.TmpLong);
        	  ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileSize = 0;

			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Extension[0] = (S8)' ';
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Extension[1] = (S8)' ';
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Extension[2] = (S8)' ';
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[0] = (S8)'.';
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[1] = (S8)'.';
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[2] = (S8)' ';
	          ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[3] = (S8)' ';
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[4] = (S8)' ';
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[5] = (S8)' ';
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[6] = (S8)' ';
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileName[7] = (S8)' ';
        	  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Attribute = ARCHIVE_DIR;
	          ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[0] = 0x08;
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[1] = 0x2A;
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[2] = 0x2E;
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[3] = 0x5A;
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[4] = 0x2D;
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[5] = 0x35;
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[6] = 0x39;
			  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Reserved[7] = 0x35;
        	  ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FSClusHI = 0;
              ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Time = 0x5A2E;
              ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Date = 0x352D;
	          ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FSClusLO = 0;
    	      ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->FileSize = 0;
		    }
            DMA_write_sector(p++, 0x06);
		  }
	      SendChar(0xC5);
          return;
	    }
		else
		{
		  FileData.wCurFDBNo++;
		  if(!(FileData.wCurFDBNo & 0x0F))
		    flag = 0;
		}
	  }
      FileData.wCurFDBNo = 0;
      FileData.dwCurCluNo++;
	}
    //return KO;
  }
  else
  {
    //FAT16
    FileData.wCurFDBNo = 0;
	for(;FileData.wCurFDBNo < (U16)FileData.RootDirNum;)
	{
	  if(!flag)
	  {
	    position = CFatData.dwRootStartlba + (FileData.wCurFDBNo / CFatData.bFDBNumInSec);
	    DMA_load_sector(position, 0x06);
		flag = 1;
	  }
	  if((((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[0] == (S8)DIR_Unused)
		||(((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[0] == (S8)DIR_Deleted))
	  {
	    //在根目录中写入文件夹名
		((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Extension[0] = (S8)' ';
	    ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Extension[1] = (S8)' ';
	    ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Extension[2] = (S8)' ';
	    ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[0] = (S8)'F';
	    ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[1] = (S8)'J';
	    ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[2] = (S8)' ';
        ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[3] = (S8)' ';
	    ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[4] = (S8)' ';
	    ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[5] = (S8)' ';
	    ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[6] = (S8)' ';
	    ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileName[7] = (S8)' ';
        ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Attribute = ARCHIVE_DIR;
        ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[0] = 0x08;
		((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[1] = 0x2A;
		((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[2] = 0x2E;
		((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[3] = 0x5A;
		((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[4] = 0x2D;
		((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[5] = 0x35;
		((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[6] = 0x39;
		((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->Reserved[7] = 0x35;
        ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FSClusHI = LE16((U16)(varAl.TmpLong >> 16));
        ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Time = 0x5A2E;
        ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Date = 0x352D;
        ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FSClusLO = LE16((U16)varAl.TmpLong);
        ((_DIR *)(sbuf2 + (FileData.wCurFDBNo & 0x0F)* DIREntrySize))->FileSize = 0;
        DMA_write_sector(position, 0x06);

        //写子目录父目录索引, 并至少清除一簇
        p = CFatData.dwClu2Startlba + (varAl.TmpLong - 2)* (U32)CFatData.bSectorsPerClu;
        //DMA_load_sector(p, 0x06);
		for(index = 0; index < CFatData.bSectorsPerClu; index++)
		{
		  clear_DMA((U8 xdata *)0xF000);;
		  if(!index)
		  {
	        ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Extension[0] = (S8)' ';
		    ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Extension[1] = (S8)' ';
		    ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Extension[2] = (S8)' ';
		    ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[0] = (S8)'.';
		    ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[1] = (S8)' ';
	    	((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[2] = (S8)' ';
	        ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[3] = (S8)' ';
		    ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[4] = (S8)' ';
	    	((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[5] = (S8)' ';
		    ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[6] = (S8)' ';
		    ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileName[7] = (S8)' ';
        	((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Attribute = ARCHIVE_DIR;
	        ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[0] = 0x08;
			((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[1] = 0x2A;
			((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[2] = 0x2E;
			((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[3] = 0x5A;
			((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[4] = 0x2D;
			((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[5] = 0x35;
			((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[6] = 0x39;
			((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->Reserved[7] = 0x35;
        	((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FSClusHI = LE16((U16)(varAl.TmpLong >> 16));
			((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Time = 0x5A2E;
    	    ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Date = 0x352D;
        	((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FSClusLO = LE16((U16)varAl.TmpLong);
	        ((_DIR *)(sbuf2 + (0 & 0x0F)* DIREntrySize))->FileSize = 0;

	        ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Extension[0] = (S8)' ';
		    ((_DIR *)(sbuf2 + (1 & 0x0F)* DIREntrySize))->Extension[1] = (S8)' ';

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -