|
|
//----------------------------------------------------------------------
//
// .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);
|