Changeset 120
- Timestamp:
- Aug 21, 2016, 9:59:12 AM (9 years ago)
- Author:
- Valery V. Sedletski
- Message:
-
ufat32.dll: Make CHKDSK to set volume clean.
- Location:
- branches/fat32-0.10/src/ufat32
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/fat32-0.10/src/ufat32/chkdsk.c
r118 r120 74 74 VOID GetCaseConversion( PUCHAR pCase ); 75 75 VOID Translate2OS2(PUSHORT pusUni, PSZ pszName, USHORT usLen); 76 (追記) (追記ここまで) 77 (追記) void remount_media (HFILE hDevice); (追記ここまで) 76 78 77 79 INT cdecl iShowMessage(PCDINFO pCD, USHORT usNr, USHORT usNumFields, ...); … … 523 525 ulDataSize = nSectors * SECTOR_SIZE; 524 526 527 (追記) //if (pVolInfo->fWriteProtected) (追記ここまで) 528 (追記) // return ERROR_WRITE_PROTECT; (追記ここまで) 529 (追記) (追記ここまで) 530 (追記) //if (pVolInfo->fDiskClean) (追記ここまで) 531 (追記) // MarkDiskStatus(pVolInfo, FALSE); (追記ここまで) 532 (追記) (追記ここまで) 525 533 if ( (rc = DosDevIOCtl(pCD->hDisk, IOCTL_DISK, DSK_GETDEVICEPARAMS, 526 534 &parm2, parmlen2, &parmlen2, &bpb, datalen2, &datalen2)) ) … … 675 683 if (pCD->DiskInfo.avail_clusters != pCD->ulFreeClusters) 676 684 { 685 (追記) printf("pCD->DiskInfo.avail_clusters=%lu\n", pCD->DiskInfo.avail_clusters); (追記ここまで) 686 (追記) printf("pCD->ulFreeClusters=%lu\n", pCD->ulFreeClusters); (追記ここまで) 677 687 printf("The stored free disk space is incorrect.\n"); 678 688 printf("(%lu free allocation units are reported while %lu free units are detected.)\n", … … 754 764 printf("Still errors found on disk. Please run Windows 95 ScanDisk!\n"); 755 765 } 756 //else if (pCD->fFix) 766 else if (pCD->fFix) 767 { 757 768 //DosDevIOCtl(NULL, NULL, FAT32_MARKVOLCLEAN, IOCTL_FAT32, pCD->hDisk); 758 769 //DosDevIOCtl(pCD->hDisk, IOCTL_FAT32, FAT32_MARKVOLCLEAN, 759 770 // NULL, 0, NULL, NULL, 0, NULL); 771 (追記) MarkDiskStatus(pCD, TRUE); (追記ここまで) 772 (追記) remount_media(pCD->hDisk); (追記ここまで) 773 (追記) } (追記ここまで) 760 774 761 775 return 0; -
branches/fat32-0.10/src/ufat32/fatfunc.c
r117 r120 120 120 ULONG GetNextCluster2(PCDINFO pCD, ULONG ulCluster); 121 121 BOOL GetDiskStatus(PCDINFO pCD); 122 ULONG GetFreeSpace(PCDINFO p (削除) VolInfo (削除ここまで));122 ULONG GetFreeSpace(PCDINFO p(追記) CD (追記ここまで)); 123 123 BOOL MarkDiskStatus(PCDINFO pCD, BOOL fClean); 124 124 ULONG FindDirCluster(PCDINFO pCD, PSZ pDir, USHORT usCurDirEnd, USHORT usAttrWanted, PSZ *pDirEnd); … … 154 154 BOOL LoadTranslateTable(VOID); 155 155 VOID GetCaseConversion( PUCHAR pCase ); 156 (追記) BOOL UpdateFSInfo(PCDINFO pCD); (追記ここまで) 156 157 157 158 /****************************************************************** … … 290 291 { 291 292 pCD->FSInfo.ulFreeClusters = ulTotalFree; 292 (削除) /* UpdateFSInfo(pVolInfo); * (削除ここまで)/293 (追記) UpdateFSInfo(pCD); /// (追記ここまで)/ 293 294 } 294 295 … … 1624 1625 return FAT_EOF; 1625 1626 1626 /* 1627 if (fUpdateFSInfo) 1628 UpdateFSInfo(pVolInfo); 1629 */ 1627 if (fUpdateFSInfo) //// 1628 UpdateFSInfo(pCD); 1630 1629 1631 1630 return ulReturn; … … 2050 2049 2051 2050 pCD->FSInfo.ulFreeClusters += ulClustersFreed; 2052 (削除) /* UpdateFSInfo(pVolInfo);* (削除ここまで)/2051 (追記) UpdateFSInfo(pCD); /// (追記ここまで)/ 2053 2052 2054 2053 //ReleaseFat(pVolInfo); … … 2433 2432 memcpy( pCase, rgLCase, sizeof( rgLCase )); 2434 2433 } 2434 (追記) (追記ここまで) 2435 (追記) /****************************************************************** (追記ここまで) 2436 (追記) * (追記ここまで) 2437 (追記) ******************************************************************/ (追記ここまで) 2438 (追記) BOOL UpdateFSInfo(PCDINFO pCD) (追記ここまで) 2439 (追記) { (追記ここまで) 2440 (追記) static BYTE bSector[SECTOR_SIZE] = ""; (追記ここまで) 2441 (追記) (追記ここまで) 2442 (追記) //if (f32Parms.fMessageActive & LOG_FUNCS) (追記ここまで) 2443 (追記) // Message("UpdateFSInfo"); (追記ここまで) 2444 (追記) (追記ここまで) 2445 (追記) //if (pCD->fFormatInProgress) (追記ここまで) 2446 (追記) // return FALSE; (追記ここまで) 2447 (追記) (追記ここまで) 2448 (追記) //if (pCD->fWriteProtected) (追記ここまで) 2449 (追記) // return TRUE; (追記ここまで) 2450 (追記) (追記ここまで) 2451 (追記) if (pCD->BootSect.bpb.FSinfoSec == 0xFFFF) (追記ここまで) 2452 (追記) return TRUE; (追記ここまで) 2453 (追記) (追記ここまで) 2454 (追記) if (!ReadSector(pCD, pCD->BootSect.bpb.FSinfoSec, 1, bSector)) (追記ここまで) 2455 (追記) { (追記ここまで) 2456 (追記) memcpy(bSector + FSINFO_OFFSET, (void *)&pCD->FSInfo, sizeof (BOOTFSINFO)); (追記ここまで) 2457 (追記) if (!WriteSector(pCD, pCD->BootSect.bpb.FSinfoSec, 1, bSector)) (追記ここまで) 2458 (追記) return TRUE; (追記ここまで) 2459 (追記) } (追記ここまで) 2460 (追記) //CritMessage("UpdateFSInfo for %c: failed!", pVolInfo->bDrive + 'A'); (追記ここまで) 2461 (追記) //Message("ERROR: UpdateFSInfo for %c: failed!", pVolInfo->bDrive + 'A'); (追記ここまで) 2462 (追記) (追記ここまで) 2463 (追記) return FALSE; (追記ここまで) 2464 (追記) } (追記ここまで)
Note:
See TracChangeset
for help on using the changeset viewer.