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

📄 vdkpart.h

📁 Virtual Disk Driver
💻 H
字号:
/*	vdkpart.h	VDK partition management header	Copyright (C) 2003 Ken Kato*/#ifndef _VDKPART_H_#define _VDKPART_H_#ifdef __cplusplusextern "C" {#endif#define PART_NONE			0x00#define PART_DOS_FAT12		0x01#define PART_DOS_FAT16		0x04#define PART_DOS_EXT		0x05#define PART_DOS_HUGE		0x06#define PART_NTFS_HPFS		0x07#define PART_DOS_FAT32		0x0b#define PART_DOS_FAT32X		0x0c#define PART_DOS_FAT16X		0X0e#define PART_DOS_EXTX		0x0f#define PART_LINUX_MINIX	0x81#define PART_LINUX_SWAP		0x82#define PART_LINUX			0x83#define PART_LINUX_EXT		0x85#define IS_EXTENDED(x)		((x) == PART_DOS_EXT || (x) == PART_DOS_EXTX || (x) == PART_LINUX_EXT)#define IS_DOS_PART(x) 		((x) == PART_DOS_FAT12 || (x) == PART_DOS_FAT16 || (x) == PART_DOS_HUGE)#define HAS_DOS_LABEL(x)	(IS_DOS_PART(x) || (x) == PART_NTFS_HPFS || (x) == PART_DOS_FAT32 || (x) == PART_DOS_FAT32X || (x) == PART_DOS_FAT16X)#define ACTIVE_FLAG			0x80#define SIGNATURE_LOW		0x55#define SIGNATURE_HIGH		0xaa#define SIGNATURE_WORD		0xaa55#define REISERFS_SUPER_MAGIC	"ReIsErFs"#define REISER2FS_SUPER_MAGIC	"ReIsEr2Fs"#define REISERFS_SUPER_OFFSET	128			// (64 * 1024) bytes#define EXT2_LABEL_LENGTH		16#define EXT2_SUPER_MAGIC		0xef53#define EXT3_HAS_JOURNAL		0x0004#define XFS_LABEL_LENGTH		12#define XFS_SUPER_MAGIC			"XFSB"#ifdef _MSC_VER#pragma pack(1)#endiftypedef struct _PARTITION_ENTRY {	UCHAR boot;					/* 0x80 - active		*/	UCHAR start_head;			/* starting head		*/	UCHAR start_sec;		   	/* starting sector		*/	UCHAR start_cyl;		 	/* starting cylinder	*/	UCHAR type; 		 		/* partition type		*/	UCHAR end_head; 			/* end head				*/	UCHAR end_sec;		 		/* end sector			*/	UCHAR end_cyl;				/* end cylinder			*/	ULONG lba_start;			/* starting sector		*/	ULONG lba_length;			/* partition length		*/}#ifdef __GNUC____attribute__ ((packed))#endifPARTITION_ENTRY, *PPARTITION_ENTRY;typedef union _PARTITION_TABLE {	UCHAR buf[VDK_BYTES_PER_SECTOR];	struct {		UCHAR			filler[0x1be];		PARTITION_ENTRY	partition[4];		USHORT			signature;	} p;}#ifdef __GNUC____attribute__ ((packed))#endifPARTITION_TABLE, *PPARTITION_TABLE;typedef struct _FAT16_BPB {		// BIOS parameter block for FAT16	USHORT	BytesPerSector;	UCHAR	SectorsPerCluster;	USHORT	ReservedSectors;	UCHAR	NumberOfFATs;	USHORT	RootEntries;	USHORT	SmallSectors;	UCHAR	MediaDescriptor;	USHORT	SectorsPerFAT;	USHORT	SectorsPerTrack;	USHORT	NumberofHeads;	ULONG	HiddenSectors;	ULONG	LargeSectors;}#ifdef __GNUC____attribute__ ((packed))#endifFAT16_BPB, *PFAT16_BPB;typedef struct _FAT16_EXBPB {	// Extended BIOS parameter block for FAT16	UCHAR	PhysicalDriveNumber;	UCHAR	Reserved;	UCHAR	ExtendedBootSignature;	ULONG	VolumeSerialNumber;	CHAR	VolumeLabel[11];	CHAR	FileSystemType[8];}#ifdef __GNUC____attribute__ ((packed))#endifFAT16_EXBPB, *PFAT16_EXBPB;typedef struct _FAT16_PBR {		// Partition Boot Record	UCHAR 		jump[3];	// Jump Instruction (E9 or EB, xx, xx)	CHAR 		oemid[8];	// OEM ID (OS type)	FAT16_BPB	bpb;	FAT16_EXBPB	exbpb;	UCHAR 		code[448];	// Bootstrap Code	USHORT 		signature;	// End of Sector Marker}#ifdef __GNUC____attribute__ ((packed))#endifFAT16_PBR, *PFAT16_PBR;typedef struct _FAT32_BPB {		// BIOS Parameter Block	USHORT	BytesPerSector;	UCHAR	SectorsPerCluster;	USHORT	ReservedSectors;	UCHAR	NumberOfFATs;	USHORT	RootEntries;		// (FAT12/FAT16 only).	USHORT	SmallSectors;		// (FAT12/FAT16 only).	UCHAR	MediaDescriptor;	USHORT	SectorsPerFAT;		// (FAT12/FAT16 only).	USHORT	SectorsPerTrack;	USHORT	NumberOfHeads;	ULONG	HiddenSectors;	ULONG	LargeSectors;	ULONG	SectorsPerFAT32;	// (FAT32 only)	USHORT	ExtendedFlags;		// (FAT32 only)	USHORT	FileSystemVersion;	// (FAT32 only)	ULONG	RootClusterNumber;	// (FAT32 only)	USHORT	FileSystemInformationSectorNumber;	// (FAT32 only)	USHORT	BackupBootSector;	// (FAT32 only)	UCHAR 	Reserved[12];		// (FAT32 only)}#ifdef __GNUC____attribute__ ((packed))#endifFAT32_BPB, *PFAT32_BPB;typedef struct _FAT32_EXBPB {	UCHAR	PhysicalDriveNumber;	UCHAR	Reserved;	UCHAR	ExtendedBootSignature;	ULONG	VolumeSerialNumber;	CHAR	VolumeLabel[11];	CHAR	SystemID[8];}#ifdef __GNUC____attribute__ ((packed))#endifFAT32_EXBPB, *PFAT32_EXBPB;typedef struct _FAT32_PBR {		// Partition Boot Record	UCHAR 		jump[3];	// Jump Instruction	CHAR		oemid[8];	// OEM ID (OS type)	FAT32_BPB	bpb;	FAT32_EXBPB	exbpb;	UCHAR 		code[420];	// Bootstrap Code	USHORT 		signature;	// End of Sector Marker}#ifdef __GNUC____attribute__ ((packed))#endifFAT32_PBR, *PFAT32_PBR;typedef struct _NTFS_BPB {	USHORT	BytesPerSector;	UCHAR	SectorsPerCluster;	USHORT	ReservedSectors;	UCHAR	NumberOfFATs;		// always 0	USHORT	RootEntries;		// always 0	USHORT	SmallSectors;		// not used by NTFS	UCHAR	MediaDescriptor;	USHORT 	SectorsPerFAT;		// always 0	USHORT	SectorsPerTrack;	USHORT	NumberOfHeads;	ULONG	HiddenSectors;	ULONG	LargeSectors;		//	not used by NTFS}#ifdef __GNUC____attribute__ ((packed))#endifNTFS_BPB, *PNTFS_BPB;typedef struct _NTFS_EXBPB {	// Extended BIOS parameter block for FAT16	ULONG 	Reserved;		// not used by NTFS	ULONG	TotalSectorsLow;	ULONG	TotalSectorsHigh;	ULONG	MFTLow;	ULONG	MFTHigh;	ULONG	MFTMirrLow;	ULONG	MFTMirrHigh;	ULONG	ClustersPerFileRecordSegment;	ULONG	ClustersPerIndexBlock;	ULONG	VolumeSerialNumberLow;	ULONG	VolumeSerialNumberHigh;	ULONG	Checksum;}#ifdef __GNUC____attribute__ ((packed))#endifNTFS_EXBPB, *PNTFS_EXBPB;typedef struct _NTFS_PBR {		// Partition Boot Record	UCHAR 		jump[3];	// Jump Instruction	CHAR		oemid[8];	// OEM ID (OS type)	NTFS_BPB	bpb;	NTFS_EXBPB	exbpb;	UCHAR 		code[426];	// Bootstrap Code	USHORT 		signature;	// End of Sector Marker}#ifdef __GNUC____attribute__ ((packed))#endifNTFS_PBR, *PNTFS_PBR;typedef struct _ext2_super_block {	CHAR		s_dummy0[56];	USHORT		s_magic;	CHAR		s_dummy1[34];	ULONG		s_feature;	CHAR		s_dummy2[24];	CHAR		s_volume_name[EXT2_LABEL_LENGTH];	CHAR		s_last_mounted[64];	CHAR		s_dummy3[824];}#ifdef __GNUC____attribute__ ((packed))#endifEXT2_SB, *PEXT2_SB;typedef struct _reiserfs_super_block {	CHAR		s_dummy0[ 52];	CHAR		s_magic [ 12];	CHAR		s_dummy1[140];}#ifdef __GNUC____attribute__ ((packed))#endifREISER_SB, *PREISER_SB;typedef struct _xfs_super_block {	CHAR		s_magic[4];	UCHAR		s_dummy0[104];	CHAR		s_fname[XFS_LABEL_LENGTH];	UCHAR		s_dummy1[904];}#ifdef __GNUC____attribute__ ((packed))#endifXFS_SB, *PXFS_SB;#ifdef _MSC_VER#pragma pack()#endif#define MIN_FAT16_VOLUME	32680#define MAX_FSNAME_LEN		8#define MAX_LABEL_LEN		20typedef struct _PARTITION_ITEM {	ULONG	idx;			// 1 based partition index	ULONG	num;			// Linux style partition number	ULONG	type;			// Partition type	ULONG	offset;			// Starting offset	ULONG	length;			// Partition length	CHAR	fsname[MAX_FSNAME_LEN + 1];	CHAR	label[MAX_LABEL_LEN + 1];}PARTITION_ITEM, *PPARTITION_ITEM;#ifndef DISK_INFO_DEFINEDtypedef struct _VDK_DISK_INFO *PVDK_DISK_INFO;#endifUCHAR VdkIdentifyFAT(	PFAT16_PBR		Pbr,	PPARTITION_ITEM PartItem);UCHAR VdkIdentifyXFS(	PXFS_SB			Xfsb,	PPARTITION_ITEM	PartItem);UCHAR VdkIdentifyEXT2(	PEXT2_SB 		e2fsb,	PPARTITION_ITEM	PartItem);UCHAR VdkIdentifyRFS(	PREISER_SB		rfsb,	PPARTITION_ITEM	PartItem);UCHAR VdkIdentifyFS(	PVDK_DISK_INFO	DiskInfo,	HANDLE			hFile,	PPARTITION_ITEM	PartItem);typedef void(*PLIST_CALLBACK)(PPARTITION_ITEM, PVOID);VDKSTAT VdkListPartitions(	PVDK_DISK_INFO	DiskInfo,	HANDLE			hFile,	ULONG			Capacity,	PLIST_CALLBACK	CallBack,	PVOID			Param);const PCHAR GetPartitionTypeName(ULONG type);BOOL IsPartitionMountable(ULONG type, BOOL read_only);#ifdef __cplusplus}#endif#endif	// _VDKPART_H_

⌨️ 快捷键说明

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