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

📄 mini.h

📁 内含纯DOS,WIN32控制台和WIN32 GUI三个版本.它们生成的备份文件可以在任何版本中使用. WIN32 GUI版本暂使用备份功能(其他模块也都已全部写好,全是完整的,现在仅开启备份功能),如
💻 H
字号:
#include <stdio.h>
/*#include <windows.h>*/
/*#include "StdAfx.h"*/

#define MAXPATH 256

#define MAX_DRIVE_NUM 20
#define MAX_PARTITION_NUM 100
#define MAX_TASK_NUM 10
#define DEFAULT_EVERY_VOLUME_MB 2047 /* The byte maximum of every file is 2048<FAT16>,4096<FAT32> MBs in MS-DOS */
#define DEFAULT_COMPRESS_LEVEL 6

#define ARGUMENT_DISK 1
#define ARGUMENT_PARTITION 2
#define ARGUMENT_DOSLETTER 3
#define ARGUMENT_IMAGE 4

#define PRINT_DRIVE_ALL -2
#define PRINT_DRIVE_FLOPPY -3

#define PRINT_PARTITION_ALL 0
#define PRINT_PARTITION_DOSLETTER 1
#define PRINT_PARTITION_FAT 2
#define PRINT_PARTITION_NTFS 3
#define PRINT_PARTITION_FAT_NTFS 4
#define PRINT_PARTITION_LINUX 5
#define PRINT_PARTITION_NO_HIDDEN 6
#define PRINT_PARTITION_NO_ZERO 7
#define PRINT_PARTITION_NO_ZERO_HIDDEN 8
#define PRINT_PARTITION_FLOPPY 9
#define INVALID_INDEX -1
/*#define SWAP_FLAG -2 */
#define ALL_OR_THIS_TYPE -2

#define DISK_BUF_BYTE 65535
#define COMPRESS_DECOMPRESS_BUF_BYTE 65535


#define NTFSPRO 1
#define IFS 2


#define DPT 0
#define DBR 1
#define FAT 2
#define PRINTFILE 3

#define MAX_BUF_BYTE 65535
/*#define MAX_COMPRESS_BYTE 61440*/
#define MAX_SECTOR_BUF_BYTE /*64512 */ 61440

#define INVALID_MODE -1
#define INVALID_TARGET -1


#define SAVE 0
#define RESTORE 1
#define COMPARE 2
#define REPLACE 3
#define PRINT 4

#define MAX_FAT32_VOL_SEARCH 3UL

#define int13Error(a,b,c,d);
/*0x42,driveNum+127,start,int13Return); */



typedef struct driveInfo
{
	char floppy;
	/*	char orderNumber;  */
	char number;
	char supportExtInt13;
	unsigned long maxCylinder;
	unsigned long maxHead;
	unsigned long maxSectorPerTrack;
	unsigned long totalSector;
	unsigned long part;
}Dinfo,*DinfoP;

typedef struct partitionInfo
{
	char letterNumber;
	char letter;
	char WINletter;
	
	/*	char totalNumber;  */
	short hardDrive;
	char number;
	char logicDrive;
	char active;
	unsigned short activeOffset;
	unsigned char ID;
	unsigned short IDoffset;
	char label[12];
unsigned long volumeSerialNumber;
	unsigned long start;
	unsigned long total;
	unsigned long freeSpaceKB;
	char error;
}Pinfo,*PinfoP;

typedef struct _commonArg
{
	char argMode;
	
	short drive;
	char number;
	char letter;
/*	char WINletter;*/
	short index;
	unsigned long totalSector;
	char startToDoTRUE;
	unsigned long startToDoGiven;
	unsigned long startToDo;
	
	char sectorToDoTRUE;
	
	unsigned long sectorToDo;
	
	char name[256];
	char compressDecompress;
	char compressLevel;
	char keyTRUE;
	char separatedVolume;
	unsigned long separatedMB;
	char keyEveryTRUE;
	char keyEveryPromptTRUE;
	
	unsigned long size;
	unsigned long realSize;
	char continueUnfinished;
	unsigned long lastPos;
	
	unsigned long *lastDoneSector;
	unsigned long *unfinishedSector;
	
	unsigned long sectorToUnfinishedVolume;
	char indexToAddName;
	char addONE;
	char quiet;
	char mute;
	char ignore;
	char next;
	
}commonArg;

void help();

int readWriteDrive(unsigned int cmd, 
				   char *devicePar, 
				   unsigned long startSectorPar, 
				   DWORD sectorToDo,
				   char *buf);

short absread(short drive,
			  unsigned long sectorToDo,
			  unsigned long startSector, 
			  char *buf);

short abswrite(short drive, 
			   unsigned long sectorToDo,
			   unsigned long startSector, 
			   char *buf);

short extInt13(unsigned short cmd,
			 short drive,
			 unsigned long startSector,
			 unsigned long sectorToDo,
			 char *buf);


int compareByte(char *buf1, 
				char *buf2, 
				unsigned long byte, 
				char pause, 
				unsigned long *diff, 
				unsigned long *offsetAllRecord);

void getVolumeSerialNumber(Pinfo **part);

short putInWINletterVol(Pinfo *part[]);

void WINputInDiskFreeSpace(Pinfo *part[]);

void takeFS(char ID, char *FS, char *hidden);

short getDrive(short drive,
			 char *supportExtInt13,
			 unsigned long *maxCylinder,
			 unsigned long *maxHead,
			 unsigned long *maxSectorPerTrack,
			 unsigned long *totalSector,
			 char ignoreHDDparameter);
void getDriveTable(Dinfo *driveTable[], char useFloppy, char ignoreHDDparameter);
short putInDrivePartNum(Dinfo *driveTable[], Pinfo *partitionTable[]);

short getDriveItem(char drive,
				 Dinfo *driveTable[],
				 short *driveIndex);
short printDrive(Dinfo *driveTable[], Pinfo *partitionTable[], short index);
/*extern */void putInDOSletter(Pinfo *part[]);
		
		void getPartitionTable(Dinfo *driveTable[], Pinfo *partP[]);
short printOption(char mode, Pinfo *partitionTable,char win);
void printPartitionTable(Pinfo *partition_Table[], char mode, short index, short printOneDrive,char win);
void putInDOSletter(Pinfo *part[]);
void putInExtraLetter(Pinfo *partitionTable[], char extraMode);
short getPartitionItem(short drive,
					 char partition,
					 Pinfo *partitionTable[],
					 short *index,
					 char win);
short printPartitionItem(Pinfo *partitionTable[], short index);
short extractFromStr(char *str, char separateCh, char *strSet[]);
short isNumber(char *str);
short getCommonArgFromArg(char *str,
						Dinfo *driveTable[],
						Pinfo *partitionTable[],
						commonArg **arg,
						char win);
short YesNo(char *s, char *filename);
short fopenFile(FILE **f, char rw, char *filename, char allVolumeEnd);
char getDOSletterFromFileName(char *file);


/*
 void savePrintPartitionTable(Pinfo *pInfo[], short drive, char *file, char mode, char pause, char yes);
*/
UINT savePrintPartitionTable(LPVOID p);
/*
void restoreComparePrintPartitionTable(short  drive, char *file, char mode, char pause, char yes);
*/
UINT restoreComparePrintPartitionTable(LPVOID p);

short getFATinfo(Pinfo **partitionTable,
/*short driveNum,
unsigned long startSector, */
commonArg *arg,
unsigned short *reservedSectorBeforeFAT,
unsigned long *FATsector,
char *FATcount);
/*
void doDPTDBRFAT(Pinfo **partitionTable, commonArg *arg, char mode, char target, char *file, char pause, char compress, char level, char yes);
*/
UINT doDPTDBRFAT(LPVOID p);
short DOSletterPartitionConverter(Dinfo *driveTable[], Pinfo *partitionTable[], char *str,char win);
						

⌨️ 快捷键说明

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