//---------------------------------------------------------------------- // // .h file for the DSKMAINT DLL // //---------------------------------------------------------------------- // // Prototype for the engine call back function // typedef LRESULT (CALLBACK* DSKUTILCBPROC)(UINT,LPARAM,LPARAM,LPARAM,LPARAM,LPARAM,LPARAM); // // Drive parameter structures // typedef struct tagUNKNOWNFSSTRUCT { WORD Error; /* If available, error code */ } UNKNOWNFSSTRUCT; typedef struct tagINVALIDFSSTRUCT { WORD Error; /* If available, error code */ } INVALIDFSSTRUCT; typedef struct tagFATFSSTRUCT { BYTE MediaDesc; /* Media Descriptor byte */ BYTE FATNum; /* Number of FATs */ WORD FSSubType; /* allocation sub type */ DWORD BytPerSec; /* Bytes per sector */ DWORD SecPerClus; /* Sectors per cluster */ DWORD TotSec; /* Total number of sectors on drive */ DWORD TotSizeK; /* (TotSec * BytPerSec) / 1024 */ DWORD TotSizeM; /* (TotSec * BytPerSec) / 1024^2 */ DWORD FATSector; /* Sector number of first sector of first FAT and */ /* number of RESERVED/BOOT sectors */ DWORD FATSize; /* Size of one FAT in sectors */ DWORD DirEntSizeMin; /* Minimum size in bytes of a directory entry */ DWORD DirEntSizeMax; /* Maximum size in bytes of a directory entry */ DWORD RootDirSecCnt; /* number of sectors in root directory */ DWORD RootDirSector; /* Sector number of first root directory sector */ DWORD RootDirEntCntMin; /* Min number of entries in root directory */ DWORD RootDirEntCntMax; /* Max number of entries in root directory */ DWORD TotDataClus; /* total number of data clusters on drive */ DWORD DataSizeK; /* (TotDataClus*SecPerClus*BytePerSec) / 1024 */ DWORD DataSizeM; /* (TotDataClus*SecPerClus*BytePerSec)/1024^2 */ DWORD MaxClusNum; /* Maximum valid cluster number for drive */ DWORD FSStrucSzBytes; /* Buffer size req for ReadFileSysStruc API */ DWORD EOFClusVal; /* Clusters which contain values >= this */ /* value are EndOfFile clusters */ DWORD BadClusVal; /* "Lost" clusters which contain values == this */ /* value are BAD clusters */ DWORD FrstDataSector; /* Sector number of first sector of first data cluster */ DWORD FrstDataCluster; /* Cluster # who's first sector is FrstDataSector */ } FATFSSTRUCT; // // FSSubType // #define FSS_FAT12 1 #define FSS_FAT16 2 typedef struct tagDRVPARMSTRUCT { UINT FileSysType; UINT Drive; union { UNKNOWNFSSTRUCT unkFS; INVALIDFSSTRUCT invFS; FATFSSTRUCT FatFS; } drvprm; BYTE resrvd[80]; } DRVPARMSTRUCT; typedef DRVPARMSTRUCT* PDRVPARMSTRUCT; typedef DRVPARMSTRUCT NEAR* NPDRVPARMSTRUCT; typedef DRVPARMSTRUCT FAR* LPDRVPARMSTRUCT; // // File system types // #define FS_INVALID 6000 #define FS_UNKNOWN 1 #define FS_ERROR 2 #define FS_FAT 3 #define FS_DDFAT 4 #define FS_LFNFAT 5 #define FS_DDLFNFAT 6 #define FS_SIZEERR 8000 // // Modifyer flags for GetEngineDriveInfo returns // #define FS_CANRDWRTSEC 0x0001 #define FS_CANRDWRTFSS 0x0002 #define FS_CANFORMAT 0x0004 #define FS_ISFIXABLE 0x0008 #define FS_ISOPTIMIZABLE 0x0010 BOOL WINAPI DMaint_GetEngineDriveInfo(LPDWORD lpEngInfArray); UINT WINAPI DMaint_GetFileSysParameters(UINT Drive, LPDRVPARMSTRUCT lpParmBuf, UINT nSize); DWORD WINAPI DMaint_ReadSector(LPDRVPARMSTRUCT lpParmBuf, LPVOID lpSectorBuf, DWORD sSector, DWORD nSectors); DWORD WINAPI DMaint_WriteSector(LPDRVPARMSTRUCT lpParmBuf, LPVOID lpSectorBuf, DWORD sSector, DWORD nSectors); DWORD WINAPI DMaint_ReadFileSysStruc(LPDRVPARMSTRUCT lpParmBuf, LPVOID lpFSBuf, DWORD nSize); DWORD WINAPI DMaint_WriteFileSysStruc(LPDRVPARMSTRUCT lpParmBuf, LPVOID lpFSBuf, DWORD FSFlags); // // Structures and defines for DMaint_GetFormatOptions DMaint_FormatDrive // DMaint_UnFormatDrive // #define MAXNUMFMTS 16 #define MAXFMTNAMELEN 60 #define MAXFNAMELEN 256 // INCLUDES trailing NUL #define DRVMAXPATHLEN (260 + 3) // INCLUDES trailing NUL, + 3 for "X:\" typedef struct tagFMTINFOSTRUCT { BYTE TotalPcntCmplt; BYTE CurrOpRegion; UINT Drive; WORD FSFmtID; WORD DefFSFmtID; WORD PhysFmtID; WORD DefPhysFmtID; DWORD Options; WORD FSFmtCnt; WORD PhysFmtCnt; BYTE VolLabel[MAXFNAMELEN]; LPARAM lParam1; LPARAM lParam2; BYTE reserved[40]; WORD FSFmtIDList[MAXNUMFMTS]; BYTE FSFmtNmList[MAXNUMFMTS][MAXFMTNAMELEN]; WORD PhysFmtIDList[MAXNUMFMTS]; BYTE PhysFmtNmList[MAXNUMFMTS][MAXFMTNAMELEN]; } FMTINFOSTRUCT; typedef FMTINFOSTRUCT* PFMTINFOSTRUCT; typedef FMTINFOSTRUCT NEAR* NPFMTINFOSTRUCT; typedef FMTINFOSTRUCT FAR* LPFMTINFOSTRUCT; typedef struct tagFATFMTREPORT { DWORD TotDiskSzByte; DWORD TotDiskSzK; DWORD TotDiskSzM; DWORD BadSzByte; DWORD BadSzK; DWORD BadSzM; DWORD SysSzByte; DWORD UsedSzByte; DWORD UsedSzK; DWORD UsedSzM; DWORD AvailSzByte; DWORD AvailSzK; DWORD AvailSzM; DWORD BytesPerClus; DWORD TotDataClus; DWORD SerialNumber; } FATFMTREPORT; typedef FATFMTREPORT* PFATFMTREPORT; typedef FATFMTREPORT NEAR* NPFATFMTREPORT; typedef FATFMTREPORT FAR* LPFATFMTREPORT; // // Error values and bits // #define NOERROR 0 // This MUST be 0! #define OPCANCEL 1 #define ERR_NOTSUPPORTED 2 #define ERR_NOTFULLSUPP 3 #define NOFORMAT 0x0001 #define NOUNFORMAT 0x0002 #define MKSYSONLY 0x0004 #define FSONLY 0x0008 #define ERR_ISSYSDRIVE 4 #define ISWINDRV 0x0001 #define ISPAGINGDRV 0x0002 #define ERR_NONFATAL 5 #define ERR_FATAL 6 // RETRY 0x0001 // RECOV 0x0002 #define ERRTOS 0x0004 #define ERRNOOS 0x0008 #define ERRVOLLABEL 0x0010 #define ERRFBOOT 0x0020 #define ERRROOTD 0x0040 #define ERROSAREA 0x0080 #define ERRDATA 0x0100 #define ERRMBR 0x0200 #define ERRFAT 0x0400 #define ERRCVFHD 0x0800 #define ERR_OSNOTFOUND 7 #define ERR_OSERR 8 #define ERR_INSUFMEM 9 #define ERR_LOCKVIOLATION 10 #define ERR_LOCKREQUIRED 11 #define ERR_FSACTIVE 12 #define ERR_BADOPTIONS 13 #define ERR_BADSTART 14 #define ERR_BADEND 15 #define ERR_BADXADDR 16 #define ERR_NOTWRITABLE 17 #define ERR_SZERR 18 #define ERR_FSERR 19 #define FATCLUSINVALID 0x0001 #define FATSECTORSBADS 0x0002 #define ERR_BADFORMAT 20 #define FATCLUSOVERFLOW 0x0004 #define FATSECTORSBADH 0x0008 #define ERR_FSCORRECTED 21 #define ERR_FSUNCORRECTED 22 #define ERR_EXCLVIOLATION 23 // FATERRMXPLEN 29 // // sub-operation codes // #define FOP_INIT 1 #define FOP_LOWFMT 2 #define FOP_VERIFY 3 #define FOP_FSFMT 4 #define FOP_TSYS 5 #define FOP_GETLABEL 6 #define FOP_SEARCH 7 #define FOP_RESTORE 8 #define FOP_SHTDOWN 9 #define FOP_FAT 10 #define FOP_DIR 11 #define FOP_FILDIR 12 #define FOP_LOSTCLUS 13 #define FSOP_INIT 14 #define FSOP_SETUNMOV 15 #define FSOP_SYSTEM 16 #define FSOP_DATA 17 #define FOP_DDHEAD 18 #define FOP_DDSTRUC 19 #define FOP_DDFAT 20 #define FOP_DDSIG 21 #define FOP_DDBOOT 22 // // WriteFileSysStruc options // #define FATNOPACKINPLACE 0x00010000L #define FATSTOPONERR 0x00020000L // // Format options // #define FD_LOWLEV 0x00000001L #define FD_LOWLEVONLY 0x00000002L #define FD_VERIFY 0x00000004L #define FD_FSONLY 0x00000008L #define FD_UNFORMAT 0x00000010L #define FD_NOUNFORMAT 0x00000020L #define FD_PHYSONLY 0x00000040L #define FD_BOOT 0x00000080L #define FD_BOOTONLY 0x00000100L #define FD_VOLLABEL 0x00000200L #define FD_NOVOLLABEL 0x00000400L #define FD_ISVOLLABEL 0x00000800L #define FD_GETCONFIRM 0x00001000L #define FD_ISREM 0x00002000L #define FDFAT_SETCLUS 0x80000000L #define FDFAT_SETROOTSZ 0x40000000L // // Defines for call back messages // #define DU_INITENGINE 0x0401 #define DU_ENGINESTART 0x0402 #define DU_ERRORDETECTED 0x0403 #define DU_ERRORCORRECTED 0x0404 #define DU_OPUPDATE 0x0405 #define DU_READ 0x0406 #define DU_WRITE 0x0407 #define DU_OPCOMPLETE 0x0408 #define DU_YIELD 0x0409 #define DU_ENGINERESTART 0x040A #define DU_EXTENSION_FIRST 0x2000 #define DU_EXTENSION_LAST 0x2FFF // Following errors are also Bits, rest are just values // ERRFAT 0x0400 // ERRTOS 0x0004 // ERRNOOS 0x0008 // ERRVOLLABEL 0x0010 // ERRFBOOT 0x0020 // ERRROOTD 0x0040 // ERROSAREA 0x0080 // ERRDATA 0x0100 // ERRMBR 0x0200 // ERRCVFHD 0x0800 #define ERRNOUFOR 3 // ERRTOS 4 #define ERRBADUFOR 5 #define ERRDSKWRT 6 #define ERRINVFMT 7 // ERRNOOS 8 #define ERRNOQUICK 9 #define READERROR 10 #define WRITEERROR 11 #define FATERRMISMAT 12 #define FATERRLSTCLUS 13 #define FATERRXLNK 14 #define ERRXLNKDIR 0x0001 #define ERRCANTDEL 0x8000 #define FATERRFILE 15 #define ERRINVLFN 0x0001 #define ERRINVNM 0x0002 #define ERRSIZE 0x0004 #define ERRDTTM1 0x0008 #define ERRDTTM2 0x0010 #define ERRDTTM3 0x0020 #define ERRLFNSTR 0x0040 #define ERRDEVNM 0x0080 #define ERRLFNLEN 0x0100 // ERRCANTDEL 0x8000 // ERRVOLLABEL 16 #define FATERRDIR 17 #define DBUFAPP 0x0001 #define ERRBAD 0x0002 #define ERRDOTS 0x0004 #define ERRPNOTD 0x0008 #define ERRLFNSRT 0x0010 #define ERRZRLEN 0x0020 #define ERRLFNLST 0x0040 #define ERRLOSTFILE 0x0080 #define ERRDUPNM 0x0100 // ERRCANTDEL 0x8000 #define FATERRBOOT 18 #define ERRSIG1 0x0004 #define ERRSIG2 0x0008 #define ERROEMVER 0x0010 #define ERRBPB 0x0020 #define ERRINVPRT 0x0040 #define ERRINCPRT 0x0080 // ERRMBR 0x0100 #define FULLCORR 19 #define NOCORR 20 #define PCORROK 21 #define PCORRBAD 22 #define APPFIX 0x0001 #define CANTMARK APPFIX #define DISKERR 0x0002 #define NOMEM 0x0004 #define FILCRT 0x0008 #define FILCOLL 0x0010 #define CLUSALLO 0x0020 #define UNEXP 0x0040 #define DIRCRT 0x0080 #define CANTFIX 0x0100 #define FATERRRESVAL 23 #define FATERRCIRCC 24 // ERRCANTDEL 0x8000 #define FATERRINVCLUS 25 #define ERRINVC 0x0001 #define ERRINVFC 0x0002 // ERRCANTDEL 0x8000 #define FATERRCDLIMIT 26 #define ERRDLNML 0x0001 #define ERRDSNML 0x0002 // ERRCANTDEL 0x8000 #define FATERRVOLLAB 27 #define ISFRST 0x0001 #define MEMORYERROR 28 // RETRY 0x0001 // RECOV 0x0002 #define GLBMEM 0x0004 #define LOCMEM 0x0008 #define FATERRMXPLEN 29 // ERRINVLFN 0x0001 // ERRCANTDEL 0x8000 #define ERRISBAD 30 #define ERRISNTBAD 31 // ERRFBOOT 32 // RETRY 0x0001 // RECOV 0x0002 // GLBMEM 0x0004 // LOCMEM 0x0008 // ERRFBOOT 0x0020 // ERRROOTD 0x0040 // ERRDATA 0x0100 // ERRFAT 0x0400 #define RDFAIL 0x4000 #define WRTFAIL 0x8000 #define ERRNOFILE 33 #define ERRLOCKV 34 // RETRY 0x0001 #define DDERRSIZE1 35 #define DDERRFRAG 36 #define DDERRALIGN 37 #define DDERRSIG 38 // RETRY 0x0001 // RECOV 0x0002 // ERRSIG1 0x0004 // ERRSIG2 0x0008 #define DDERRBOOT 39 #define DDERRSIZE2 40 #define DDERRCVFNM 41 // RETRY 0x0001 // RECOV 0x0002 #define CHNGTONEW 0x0004 #define DDERRMDBPB 42 #define DDERRMDFAT 43 // RETRY 0x0001 // RECOV 0x0002 #define GTMXCLUS 0x0004 #define INVCHEAP 0x0008 #define DDERRLSTSQZ 44 #define DDERRXLSQZ 45 // RETRY 0x0001 // RECOV 0x0002 #define DUPFILE 0x0004 #define LOSTSQZ 0x0008 // ERRCANTDEL 0x8000 #define DDERRUNSUP 46 #define ISBETA 0x0001 #define ISSUPER 0x0002 // ERRROOTD 64 // ERROSAREA 128 // ERRDATA 256 // ERRMBR 512 // 1024 // ERRCVFHD 2048 #define RETRY 0x0001 #define RECOV 0x0002 #define BADCHRS 0x0004 #define BADSEC 0x0008 #define DISKFULL 0x0010 #define OSFILESPACE 0x0020 #define WRTPROT 0x0040 #define NOTRDY 0x0080 // The following must not conflict with RETRY and RECOV only #define MBR 0x0010 #define FAT1 0x0020 #define FAT2 0x0040 #define FATN 0x0080 #define FATMIX 0x0100 #define ROOTD 0x0200 #define DIR 0x0400 #define DATA 0x0800 #define ERETCAN2 0 #define ERETAFIX 0 #define ERETIGN2 0 #define ERETIGN 1 #define ERETRETRY 2 #define ERETCAN 3 #define ERETWFAT 4 #define ERETAPPFIX 5 #define ERETFREE 6 #define ERETMKFILS 7 #define ERETDELALL 8 #define ERETMKCPY 9 #define ERETSVONED 10 #define ERETTNCALL 11 #define ERETSVONET 12 #define ERETWRTFIX 13 #define ERETDELDIR 14 #define ERETMVDIR 15 #define ERETMVFIL ERETMVDIR #define ERETRDDIR 16 #define ERETMRKBAD 17 // Bit defines specific to DU_ENGINERESTART for DMaint_FixDrive #define OTHERWRT 0x0001 #define LOSTDIR 0x0002 #define XLNKSQZ 0x0004 // LOSTSQZ 0x0008 DWORD WINAPI DMaint_GetFormatOptions(UINT Drive, LPFMTINFOSTRUCT lpFmtInfoBuf, UINT nSize); DWORD WINAPI DMaint_FormatDrive(LPFMTINFOSTRUCT lpFmtInfoBuf, DWORD Options, DSKUTILCBPROC lpfnCallBack, LPARAM lRefData); DWORD WINAPI DMaint_UnFormatDrive(LPFMTINFOSTRUCT lpFmtInfoBuf, DWORD Options, DSKUTILCBPROC lpfnCallBack, LPARAM lRefData); // // Structures and defines for DMaint_GetFixOptions and DMaint_FixDrive // typedef struct tagFIXFATDISP { BYTE TotalPcntCmplt; BYTE CurrOpRegion; WORD Flags; WORD BitArrSz; DWORD SysAreaCnt; LPDRVPARMSTRUCT lpParmBuf; DWORD Options; LPDWORD lpVisitBitArray; LPDWORD lpDirBitArray; LPDWORD lpAllocedBitArray; LPDWORD lpBadBitArray; LPDWORD lpLostBitArray; LPDWORD lpUnMovBitArray; DWORD SerialNumber; BYTE VolLabel[MAXFNAMELEN]; WORD VolLabelDate; WORD VolLabelTime; BYTE reserved[40]; } FIXFATDISP; typedef FIXFATDISP* PFIXFATDISP; typedef FIXFATDISP NEAR* NPFIXFATDISP; typedef FIXFATDISP FAR* LPFIXFATDISP; typedef struct tagFATFIXREPORT { DWORD TotDiskSzByte; DWORD TotDiskSzK; DWORD TotDiskSzM; DWORD BadDataClusCnt; DWORD BadSzDataByte; DWORD BadSzDataK; DWORD BadSzDataM; DWORD TotBadSecCntSys; DWORD BadSecCntResvd; DWORD BadSecCntFAT; DWORD BadSecCntRootDir; DWORD HidFileCnt; DWORD HidSzByte; DWORD HidSzK; DWORD HidSzM; DWORD DirFileCnt; DWORD DirSzByte; DWORD DirSzK; DWORD DirSzM; DWORD UserFileCnt; DWORD UserSzByte; DWORD UserSzK; DWORD UserSzM; DWORD AvailSzByte; DWORD AvailSzK; DWORD AvailSzM; DWORD BytesPerClus; DWORD TotDataClus; DWORD AvailDataClus; DWORD BadClusRelocFailCnt; DWORD BadClusUnMovFailCnt; DWORD BadDataClusNew; DWORD BadDataClusConf; DWORD BadDataClusRecl; WORD Flags; } FATFIXREPORT; typedef FATFIXREPORT* PFATFIXREPORT; typedef FATFIXREPORT NEAR* NPFATFIXREPORT; typedef FATFIXREPORT FAR* LPFATFIXREPORT; // Defines for Flags #define REPLACEDISK 0x0001 #define REFORMAT 0x0002 #define HOSTFILE 0x0004 #define SWAPFILE 0x0008 #define OSFILE 0x0010 #define SPCLFILE 0x0020 typedef struct tagFATLOSTCLUSERR { DWORD LostClusCnt; DWORD LostClusChainCnt; DWORD RootDirFreeEntCnt; WORD FileFirstDigits; WORD FileLastDigits; LPSTR LostClusSaveDir; WORD DirRecvCnt; WORD LstAsFilesInDirs; } FATLOSTCLUSERR; typedef FATLOSTCLUSERR* PFATLOSTCLUSERR; typedef FATLOSTCLUSERR NEAR* NPFATLOSTCLUSERR; typedef FATLOSTCLUSERR FAR* LPFATLOSTCLUSERR; typedef struct tagXLNKFILE { DWORD FileFirstCluster; DWORD LastSecNumNotXLnked; LPSTR FileName; DWORD reserved; BYTE FileAttributes; BYTE Flags; } XLNKFILE; typedef XLNKFILE* PXLNKFILE; typedef XLNKFILE NEAR* NPXLNKFILE; typedef XLNKFILE FAR* LPXLNKFILE; // // Flags bits // #define XFF_ISSWAP 0x01 #define XFF_ISCVF 0x02 #define XFF_ISSYSDIR 0x04 #define XFF_ISSYSFILE 0x08 typedef struct tagFATXLNKERR { DWORD XLnkCluster; DWORD XLnkFrstSectorNum; DWORD XLnkClusCnt; WORD XLnkFileCnt; XLNKFILE XLnkList[]; } FATXLNKERR; typedef FATXLNKERR* PFATXLNKERR; typedef FATXLNKERR NEAR* NPFATXLNKERR; typedef FATXLNKERR FAR* LPFATXLNKERR; // // Following is provided because sizeof(FATXLNKERR) is illegal. This // define is the size in bytes of FATXLNKERR up to XLnkList (the size // without the dynamic part). // #define BASEFATXLNKERRSZ (4+4+4+2) typedef struct tagDDXLNKERR { LPDWORD DDXLnkClusterList; DWORD DDXLnkClusCnt; WORD DDXLnkFileCnt; LPXLNKFILE DDXLnkList; } DDXLNKERR; typedef DDXLNKERR* PDDXLNKERR; typedef DDXLNKERR NEAR* NPDDXLNKERR; typedef DDXLNKERR FAR* LPDDXLNKERR; typedef struct tagFATFILEERR { LPSTR lpDirName; LPSTR lpLFNFileName; LPSTR lpShortFileName; DWORD ClusterFileSize; DWORD FileFirstCluster; DWORD DirFirstCluster; DWORD DirSectorIndex; DWORD DirEntryIndex; DWORD DirEntCnt; LPVOID lpFileDirEnts; LPARAM lParam1; LPARAM lParam2; LPARAM lParam3; DWORD ExtAtt; BYTE FileAttribute; } FATFILEERR; typedef FATFILEERR* PFATFILEERR; typedef FATFILEERR NEAR* NPFATFILEERR; typedef FATFILEERR FAR* LPFATFILEERR; typedef struct tagFATDIRERR { LPSTR lpDirName; DWORD DirFirstCluster; DWORD DirFirstSectorNum; DWORD DirReadBufSizeBytes; LPVOID lpDirReadBuf; LPARAM lParam1; LPARAM lParam2; LPARAM lParam3; } FATDIRERR; typedef FATDIRERR* PFATDIRERR; typedef FATDIRERR NEAR* NPFATDIRERR; typedef FATDIRERR FAR* LPFATDIRERR; typedef struct tagFATBOOTERR { DWORD BootSectorNum; DWORD BootBufSizeSectors; LPVOID lpBootBuf; LPARAM lParam1; LPARAM lParam2; LPARAM lParam3; } FATBOOTERR; typedef FATBOOTERR* PFATBOOTERR; typedef FATBOOTERR NEAR* NPFATBOOTERR; typedef FATBOOTERR FAR* LPFATBOOTERR; // // Max number of conflicting files for LFNSORT error // #define MAXLFNSORT 8 // // Max number of LFN directory entry extensions // #define MAXLFNEXT 10 typedef struct tagLFNSORT { DWORD FileCnt; DWORD Flags; LPSTR lpShortNames[MAXLFNSORT]; LPSTR lpLFNResolve[MAXLFNEXT][MAXLFNSORT]; LPSTR lpLFNExtName0[MAXLFNSORT]; LPSTR lpLFNExtName1[MAXLFNSORT]; LPSTR lpLFNExtName2[MAXLFNSORT]; LPSTR lpLFNExtName3[MAXLFNSORT]; LPSTR lpLFNExtName4[MAXLFNSORT]; LPSTR lpLFNExtName5[MAXLFNSORT]; LPSTR lpLFNExtName6[MAXLFNSORT]; LPSTR lpLFNExtName7[MAXLFNSORT]; LPSTR lpLFNExtName8[MAXLFNSORT]; LPSTR lpLFNExtName9[MAXLFNSORT]; } LFNSORT; typedef LFNSORT* PLFNSORT; typedef LFNSORT NEAR* NPLFNSORT; typedef LFNSORT FAR* LPLFNSORT; // // DMaint_GetFixOptions flags // #define FSINVALID 0x00000001L #define FSDISALLOWED 0x00000002L #define FSISACTIVE 0x00000004L #define FSALWAYSACTIVE 0x00000008L #define FSSFTEXCLUSIVE 0x00000010L #define FSHRDEXCLUSIVE 0x00000020L #define FSEXCLUSIVEREQ 0x00000040L // // DMaint_FixDrive options // #define FDO_AUTOFIX 0x00000001L #define FDO_NOFIX 0x00000002L #define FDO_LOWPRIORITY 0x00000004L #define FDO_HRDEXCLUSIVE 0x00000008L #define FDO_SFTEXCLUSIVE 0x00000010L #define FDO_EXCLBLOCK 0x00000020L #define FDO_ALREADYLOCKED 0x00000040L #define FDOS_WRTTST 0x00000080L #define FDOS_NOSRFANAL 0x00000100L #define FDOFAT_LSTMKFILE 0x00010000L #define FDOFAT_NOXLNKLIST 0x00020000L #define FDOFAT_XLNKDEL 0x00040000L #define FDOFAT_XLNKCPY 0x00080000L #define FDOFAT_NOCHKDT 0x00100000L #define FDOFAT_NOCHKNM 0x00200000L #define FDOFAT_CHKNMMAP 0x00400000L #define FDOFAT_INVDIRIGN 0x00800000L #define FDOFAT_INVDIRDEL 0x01000000L #define FDOFAT_CHKDUPNM 0x02000000L #define FDOSFAT_NMHISSYS 0x04000000L #define FDOSFAT_NOSYSTST 0x08000000L #define FDOSFAT_NODATATST 0x10000000L #define FDOFAT_MKOLDFS 0x20000000L DWORD WINAPI DMaint_GetFixOptions(LPDRVPARMSTRUCT lpParmBuf); DWORD WINAPI DMaint_FixDrive(LPDRVPARMSTRUCT lpParmBuf, DWORD Options, DSKUTILCBPROC lpfnCallBack, LPARAM lRefData); // // Structures and defines for DMaint_GetOptimizeOptions and DMaint_OptimizeDrive // DWORD WINAPI DMaint_GetOptimizeOptions(LPDRVPARMSTRUCT lpParmBuf); DWORD WINAPI DMaint_OptimizeDrive(LPDRVPARMSTRUCT lpParmBuf);