//////////////////////////////////////////////////////////
///////////////////////////////2009-11-22更新/////////////
//////////////////////////////////////////////////////////
//修复olly发现的几个错误
#define FS_NotSupported 0x06 //不支持
//下面部分为链表中的fstype
#define FileSystem_FAT16 0x01 //FAT16 0x00为未知
#define FileSystem_FAT32 0x02 //FAT32
#define FileSystem_NTFS 0x03 //NTFS
#define FileSystem_EXFAT 0x04 //EXFAT
#define FileSystem_REG 0x1001 //注册表
#define FileSystem_PARTITION 0x2001 //分区
class Partition //枚举分区返回的链表
{
public:
WORD ErrorCode;
WORD fs;
WORD fstype; //节点类型,期待值FileSystem_PARTITION
LARGE_INTEGER StartPos; //分区开始位置
LARGE_INTEGER Size; //分区大小
BYTE Active; //是否活动分区
BYTE Flag; //分区类型,参考MBR定义
Partition * head;//第一分区
Partition * next;//下一分区
Partition *pre;//上一分区
};
typedef Partition * (* FS_ENUMPARTITION)(Partition * node);//导出枚举分区功能,需要读取MBR
//典型使用hDev=CreateFile("\\\\.\\PhysicalDrive0",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);//hDev见以前的读磁盘功能示范定义
//此功能可以和其他功能结合使用a.QuadPart=a.QuadPart+StartPos.QuadPart;SetFilePointer(hDev,a.LowPart,&a.HighPart,FILE_BEGIN);
typedef bool (* FS_DELETENODE)(void * node);//删除链表,包括fat,ntfs,exfat,reg,partition |