Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Chương trình hiển thị thông tin của boot sector

  1. #1
    Ngày gia nhập
    03 2011
    Bài viết
    54

    Mặc định Chương trình hiển thị thông tin của boot sector

    Thầy giáo cho em chương trình đọc MBR, nhưng em chạy trên win 7 không được, làm sao để sửa mã lại để có thể chạy trên win 7, mọi người giúp em với

    Code:
    #include <windows.h>
    #include <stdio.h>
    
    struct {
      	unsigned char active;
      	unsigned char BgHdr;
      	unsigned short  BgSctCyl;
      	unsigned char Sys;
      	unsigned char EndHdr;
      	unsigned short EndSctCyl;
      	unsigned long addr;		//Kieu long & int trong C-Free 4byte
      	unsigned long size;
     } Tab[4];
    
    void printTab(BYTE Buf[]){
        int i;  
      	memcpy(Tab,&Buf[446],4*16);
      	
     	printf("+------+---+-------+-----+----+-----+------+----+----------+-----------+\n");
    	printf("|      |      Begin      |    |	     End        | Relative |   Number  |\n");
    	printf("|Active+---+-------+-----+ Sys+-----+------+----+          |     Of    |\n"); 	
      	printf("|      |Hdr|  Cyl  | Sct |    | Hdr |  Cyl | Sct|  Sector  |   Sector  |\n");
    	printf("+------+---+-------+-----+----+-----+------+----+----------+-----------+\n");
      	for(i=0; i < 4; i ++ ){
    	  	printf("|%5s |",Tab[i].active==0x80?"YES":"NO"); //Active
    	  	printf("%2d |",Tab[i].BgHdr);
    	  	printf("%5d  |",(Tab[i].BgSctCyl >>8) + ((Tab[i].BgSctCyl & 0x00C0)<<2));
    	  	printf("%3d  |",Tab[i].BgSctCyl & 0x003F);
    	  	
    	  	printf(" %02X |",Tab[i].Sys);
    	  	printf("%4d |",Tab[i].EndHdr);
    	  	printf("%5d |",(Tab[i].EndSctCyl >>8) + ((Tab[i].EndSctCyl & 0x00C0)<<2));
    	  	printf("%3d |",Tab[i].EndSctCyl & 0x003F);
    	  	printf("%9d |",Tab[i].addr);
    	  	printf("%9d  |",Tab[i].size);
    	  	printf("\n");
    	  }
      	printf("+------+---+-------+-----+----+-----+------+----+----------+-----------+\n");	  
    }
    
    int main(int argc, char *argv[]){
      HANDLE hDevice;              
      BYTE Buf[512];
      DWORD byteread;
      int i;
      unsigned __int64 pos;
      LONG Lp, Hp;	
    	  
      hDevice = CreateFile(TEXT("\\\\.\\PhysicalDrive0"),  GENERIC_READ,               
                        FILE_SHARE_READ |  FILE_SHARE_WRITE, 
                        NULL, OPEN_EXISTING,0,NULL);           
    
      if (hDevice == INVALID_HANDLE_VALUE) printf("Loi doc thiet bi.....");
      else {
      	ReadFile(hDevice,Buf,512,&byteread,NULL);
      	for(i=446;i<512;i++) 	printf("  %02X ",Buf[i]);
      	
      	printf("\n\n\n");  	
      	printTab(Buf);
    	printf("\n\nExtended Partition...\n");
    
    	//Thay doi vi tri con tro file
        pos = Tab[1].addr;
    	pos *=512;
    	Lp = pos & 0xFFFFFFFF;
    	Hp = pos >> 32;
    
    	//Doc, dua ra và giai ma ext_partition	
    	SetFilePointer(hDevice,Lp, &Hp,FILE_BEGIN);
    	ReadFile(hDevice,Buf,512,&byteread,NULL);
      	for(i=446;i<512;i++) 	printf("  %02X ",Buf[i]);
      	printf("\n\n\n");
      	printTab(Buf);
      	CloseHandle( hDevice);
      }
      return 0;
    }

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Bạn phải chạy với quyền administrator mới được

Các đề tài tương tự

  1. Trả lời: 5
    Bài viết cuối: 30-10-2011, 10:42 PM
  2. Bài tập C Đọc boot sector của đĩa rồi lưu ra file text
    Gửi bởi nhimbkno1 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 02-12-2010, 08:54 PM
  3. Các bài tập về Boot sector help!
    Gửi bởi @*longhai*@ trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 28-10-2009, 10:25 AM
  4. Read Bootsector | Đọc boot sector viết bằng Turbo C
    Gửi bởi AlexF trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 10-10-2009, 04:24 PM
  5. Đọc nội dung của BOOT SECTOR tại vi trí 2007
    Gửi bởi nicolasman trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 27-11-2008, 11:22 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn