Как использовать INT 13H Расширения Программирование C, мы можем назвать Расширение функций INT 13H с той же функции C (() int86, int86x () и т.д.), которой мы пользовались в предыдущих главах. Следующий пример позволяет сосредоточить внимание на три функции (Проверить Extensions настоящее время, продлен продлен читать и писать)

Data Recovery Software
Software Development Home Contact us Support

Data Recovery | Data Recovery Software | Partition Recovery | Undelete Partition | Password Recovery | Keylogger | File Recovery | Undelete Software

Как использовать INT 13H Расширения C Programming

Мы можем назвать Расширение функций INT 13H с той же функции C (() int86, int86x () и т.д.), которой мы пользовались в предыдущих главах. Давайте учиться ему пример.

Следующий пример позволяет сосредоточить внимание на три функции (Проверить Extensions настоящее время, продлен продлен читать и писать). Однако мы не собираемся писать используете функцию в этой главе.

Data Recovery
Digital Camera Data Recovery iPod Data Recovery Data Retrieval Software USB Drive Data Recovery
Data Recovery Utility Undelete Files Data Recovery Utilities Pen Drive Data Recovery
Files Recovery Windows Data Recovery File Recovery Software Data Recovery Services

Программа сначала проверяет в случае продления или не продления в том случае, если находятся за INT 13H, Она считывает сектор 0 абсолютной (т.е. MBR) на диске. Кодирования программы проводится следующим образом :

/* Программа для доступа к секторам за 8.46 GB использовании INT 13 BIOS расширений */

#include<stdio.h>
#include<dos.h>

/* Assigns the identifier to the data type */
typedef unsigned char Byte;
typedef unsigned int Word;
typedef unsigned long DWord;

/* disk_packet structure is loaded in DS:SI and command executed */

struct disk_packet
{
Byte size_pack; // Size of packet must be 16 or 16+
Byte reserved1; // Reserved
Byte no_of_blocks;// Number of blocks for transfer
Byte reserved2; // Reserved

/* Address in Segment:Offset format */
Word offset; //offset address
Word segment; //segment address

/* To Support the Disk Even of Capacity of 1152921504.607 GB */

DWord lba1;
DWord lba2;
}disk_pack;

/* Function to check if the Extensions are supported */

void check_ext_present()
{
union REGS inregs, outregs; /* Input Registers and
Output */
inregs.h.ah=0x41; /* Function to Check
Extension Present */
inregs.x.bx=0x55AA;
inregs.h.dl=0x80; /* Drive No for first Hard Disk */

int86(0x13,&inregs,&outregs); /*Call interrupt */

if(outregs.x.cflag)
{
/* Extension Not Supported */
printf("\nBios extension not supported");
exit(1);
}

if(outregs.x.bx==0xAA55)
if(outregs.x.cx & 0x1)

/* Extension Present */
printf("\nExtended I/O supported");
}

/* Function to read the Sector */

void read_sectors(void *buffer)
{
union REGS inregs, outregs; /* Input and Output
Registers */
struct SREGS segregs; // Segment Registers
disk_pack.size_pack=16; // Set size to 16
disk_pack.no_of_blocks=1; // One block
disk_pack.reserved1=0; // Reserved Word
disk_pack.reserved2=0; // Reserved Word
disk_pack.segment=FP_SEG(buffer);// Segment of buffer
disk_pack.offset=FP_OFF(buffer); // Offset of buffer

/* request for MBR of hard disk 1 */
/* Read Absolute sector 0 */

disk_pack.lba1=0; /* LBA address, Contains first
32 bits */

/* We normally require( drives < 2.1 T.B) to set
only this */

disk_pack.lba2=0; // Last 32 bit address
inregs.h.ah=0x42; // Function to read
inregs.h.dl=0x80; // Drive Number for First Hard Disk inregs.x.si = FP_OFF(&disk_pack); /*Make DS:SI point
to disk_pack */
segregs.ds = FP_SEG(&disk_pack);

/* Call Interrupt */
int86x(0x13,&inregs,&outregs,&segregs);

if(outregs.x.cflag)
printf("\n\nError %d\n",outregs.h.ah);
else
printf("\n\nI hope Everything is all Right");
}

//// Write Sector Function \\\\

void write_sector()
{

/* Оно пишется так же, как read_sectors функции, за исключением функций Номер которые будут 0x43 этой функции. Мы поговорим продлен написать функцию в следующей главе.

До использования этой функции проверьте и убедитесь, что вы собираетесь делать. Вы должны иметь необходимые знания о том, что вы собираетесь делать. Используйте эту функцию в отсутствие знаний или, возможно, неосторожно разрушить ваши данные.*/

}

/// Main Function \\\\
void main()
{
int i=0;

/* buffer to hold MBR */
Byte mbr[512];
clrscr();

/* check for BIOS extension present */
check_ext_present();

/* read sector */
read_sectors(&mbr);

printf("\n\n Data of MBR \n");
printf("▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n\n\n");
while(i++<512)
{
/* display the MBR buffer */
printf("%c",mbr[i]);
}
}

 

Комментарии к Кодирование программы

typedef задает идентификатор, тип данных, что такое typedef неподписанные байта символ; присваивает идентификатор байта для типа данных характеристик. Аналогично Word идентификатор присваивается int DWord и возлагается на долго.

Disk_packet структура загружается в DS : SI и командованием (таких как продление образом, продлен писать или проверять и т.д.), казнен. См. функции IBM / MS Extensions INT 13H (функция к функции 41H 49H) раньше.

Check_ext_present () функции проверяет модули доступны / поддерживает или нет. Функция вызвана с ВХ = 55AAH (inregs.x.bx = 0x55AA;) А если расширение поддерживает регистр ВХ имеет значение AA55H. (См. Функция 41H раньше)

Функция read_sectors используется следующим образом абсолютные сектора диска, указываемый disk_pack.lba1. В этой программе мы уделяем disk_pack.lba1 = 0, Таким образом, мы будем читать абсолютного 0 сектора (см. Примечание ниже), таким образом, происходит следующим образом MBR на диске.

Write_sector функция также же, как и функция read_sectors будут написаны таким же образом, но с Функция различных вариантов. Мы будем использовать его в последующих главах.

Примечание :

Мы читаем секторов диска в следующих двух способов :

  1. Относительный сектор Прочтите (или напишите)
  2. Абсолютные сектора Прочтите (или напишите)

В секторе Относительная Читать мы читаем секторов диска в соответствии с КНП (Цилиндрические, Начальник сектора и) геометрию диска. В относительном секторе прочитать MBR на диске (первый сектор на диске) находится на Цилиндрические 0, руководитель сектора 0 и 1.

В Абсолют чтение секторов диска, Нам нет надобности указывать или цилиндров руководитель номера в нашей программе. Абсолютные сектора отсчитываются от абсолютного 0 сектора.

Таким образом, если мы будем читать в MBR диска (первый сектор на диске), мы будем читать абсолютный сектор 0. Именно работа BIOS преобразовать абсолютные сектора рядом с корреспондентом цилиндров, головки и номер сектора.

Как и в абсолютном секторе чтения (или записи), нам надо только подсчитать абсолютные сектора в шлейфе в таких операциях, как всего диска, считывание или письменной форме, а в случае относительного сектора чтения (или записи), нам нужно запустить три петли на момент расчета КНП поэтому абсолютные сектора чтения / записи не намного быстрее, чем относительные сектора чтения / writing.

Например, если нам нужно любой жесткий диск, 16 головок (сторон), 12 цилиндров и 63 секторов, учетом следующей таблице, показывает, процедуры и разница как методы чтения и, таким образом, показывает, как абсолютный подход может сделать наши момент принятия программы (например, чтения всего диска / письменно или стирая весь диск и т. п.) запускался значительно быстрее :

Relative Sectors ReadingОтносительная чтение секторов

Absolute Sector readingАбсолютные сектора чтении

Cylinder =0, Head =0, Sector = 1Цилиндрические = 0, = 0 Начальник сектора = 1

        Absolute Sector = 0Абсолютные сектора = 0

Cylinder =0, Head =0, Sector = 2Цилиндрические = 0, = 0 Начальник сектора = 2

        Absolute Sector = 1Абсолютные сектора = 1

Cylinder =0, Head =0, Sector = 3Цилиндрические = 0, = 0 Начальник сектора = 3

        Absolute Sector = 2Абсолютные сектора = 2

                  .
                  .
                  .
                  . 

                  .
                  .
                  .
                  . 

Cylinder =0, Head =0, Sector = 62Цилиндрические = 0, = 0 Начальник сектора = 62

        Absolute Sector = 61Абсолютные сектора = 61

Cylinder =0, Head =0, Sector = 63Цилиндрические = 0, = 0 Начальник сектора = 63

        Absolute Sector = 62Абсолютные сектора = 62

Cylinder =0, Head =1, Sector = 1Цилиндрические = 0, = 1 Начальник, Сектор = 1

        Absolute Sector = 63Абсолютные сектора = 63

Cylinder =0, Head =1, Sector = 2Цилиндрические = 0, = 1 Начальник сектора = 2

        Absolute Sector = 64Абсолютные сектора = 64

Cylinder =0, Head =1, Sector = 3Цилиндрические = 0, = 1 Начальник сектора = 3

        Absolute Sector = 65Абсолютные сектора = 65

Cylinder =0, Head =1, Sector = 4Цилиндрические = 0, = 1 Начальник сектора = 4

        Absolute Sector = 66Абсолютные сектора = 66

                  .
                  .
                  .
                  . 

                  .
                  .
                  .
                  . 

Cylinder =0, Head =1, Sector = 63Цилиндрические = 0, = 1 Начальник сектора = 63

        Absolute Sector = 125Абсолютный сектор = 125

Cylinder =0, Head =2, Sector = 1Цилиндрические = 0, = 2 Начальник сектора = 1

        Absolute Sector = 126Абсолютный сектор = 126

Cylinder =0, Head =2, Sector = 2Цилиндрические = 0, = 2 Начальник сектора = 2

        Absolute Sector = 127Абсолютный сектор = 127

Cylinder =0, Head =2, Sector = 3Цилиндрические = 0, = 2 Начальник сектора = 3

        Absolute Sector = 128Абсолютный сектор = 128

                  .
                  .
                  .
                  . 

                  .
                  .
                  .
                  . 

Cylinder =0, Head =15, Sector = 63Цилиндрические = 0, = 15 Начальник сектора = 63

        Absolute Sector = 1007Абсолютные сектора = 1007

Cylinder =1, Head =0, Sector = 1Цилиндрические = 1, Глава = 0, Сектор = 1

        Absolute Sector = 1008Абсолютные сектора = 1008

Cylinder =1, Head =0, Sector = 2Цилиндрические = 1, Глава = 0, Сектор = 2

        Absolute Sector = 1009Абсолютные сектора = 1009

Cylinder =1, Head =0, Sector = 3Цилиндрические = 1, Глава = 0, Сектор = 3

        Absolute Sector = 1010Абсолютные сектора = 1010

                  .
                  .
                  .
                  . 

                  .
                  .
                  .
                  . 

Cylinder =1, Head =0, Sector = 63Цилиндрические = 1, Глава = 0, Сектор = 63

        Absolute Sector = 1070Абсолютные сектора = 1070

Cylinder =1, Head =1, Sector = 1Цилиндрические = 1, = 1 Начальник, Сектор = 1

        Absolute Sector = 1071Абсолютные сектора = 1071

Cylinder =1, Head =1, Sector = 2Цилиндрические = 1, Глава 1 =, = 2 сектора

        Absolute Sector = 1072Абсолютные сектора = 1072

Cylinder =1, Head =1, Sector = 3Цилиндрические = 1, = 1 Начальник сектора = 3

        Absolute Sector = 1073Абсолютные сектора = 1073

                  .
                  .
                  .
                  . 

                  .
                  .
                  .
                  . 

Cylinder =1, Head =15, Sector = 63Цилиндрические = 1, Глава = 15, = 63 сектор "

        Absolute Sector = 2015Абсолютные сектора = 2015 году

Cylinder =2, Head =0, Sector = 1Цилиндрические = 2, Глава = 0, Сектор = 1

        Absolute Sector = 2016Абсолютные сектора = 2016

Cylinder =2, Head =0, Sector = 2Цилиндрические = 2, Глава = 0, Сектор = 2

        Absolute Sector = 2017Абсолютные сектора = 2017

Cylinder =2, Head =0, Sector = 3Цилиндрические = 2, Глава = 0, Сектор = 3

        Absolute Sector = 2018Абсолютные сектора = 2018

                  .
                  .
                  .
                  . 

                  .
                  .
                  .
                  . 

Cylinder =11, Head =15, Sector = 60Цилиндрические = 11, 15 = Начальник, Сектор = 60

        Absolute Sector = 12092Абсолютные сектора = 12092

Cylinder =11, Head =15, Sector = 61Цилиндрические = 11, 15 = Начальник, Сектор = 61

        Absolute Sector = 12093Абсолютные сектора = 12093

Cylinder =11, Head =15, Sector = 62Цилиндрические = 11, 15 = Начальник, Сектор = 62

        Absolute Sector = 12094Абсолютные сектора = 12094

Cylinder =11, Head =15, Sector = 63Цилиндрические = 11, 15 = Начальник, Сектор = 63

        Absolute Sector = 12095Абсолютные сектора = 12095

 

Информацию о таблице разделов в MBR, который отображается на диск MBR любой инструмент анализа, были приведены ниже :

В вышеуказанной информации относительного номера сектора начала обоих разделов 63 и 11277630 соответственно, которые были свободны от разделов и, исходя из количества секторов на диске.

Sample Chapters from book DATA RECOVERY WITH AND WITHOUT PROGRAMMING by Author Tarun Tyagi
Data Recovery with & without Programming


Publishers of the Book
Number of Pages
ISBN
Price of the Book


BPB Publications, New Delhi, India
540
81-7656-922-4
$69.00 (Including Shipping Charges, Cost of Book and Other expenses, Free Source Code CD included with the Book)





Buy Data recovery Book

Previous page

page 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20

 

 

Chapter 10


page 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20


page 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33

Next page

Data recovery software Data recovery software
Windows Data Recovery Software Windows Data Recovery Software
iPod Data Recovery Software iPod Data Recovery Software
Memory Card Data Recovery Software Memory Card Data Recovery Software
Pen Drive Data Recovery Software Pen Drive Data Recovery Software
Digital Camera Data Recovery Software Digital Camera Data Recovery Software
Removable Media Data Recovery Software Removable Media Data Recovery Software
FAT Data Recovery Software

FAT Data Recovery Software

NTFS Data Recovery Software NTFS Data Recovery Software
Zune Music Recovery Software Zune Music Recovery Software
Sim Card Data Recovery Software Sim Card Data Recovery Software
Digital Pictures Recovery Software Digital Pictures Recovery Software

System Utilities System Utilities
Keylogger Keylogger
Secure Data Wiper Secure Data Wiper

Real Estate Ghaziabad

Real Estate Ghaziabad

Real Estate Noida

Real Estate Noida

Website Design

Website Design

Web Services

Web Services

Link Exchange

Link Exchange

Live Chat Online

Live Chat Online

Mobile Website Design

Mobile Website Design

Software Development

Software Development

File Recovery Tools

File Recovery Tools

Data Retrieval

Data Retrieval

Memory Stick Data Recovery

Memory Stick Data Recovery

Files Recovery

Files Recovery

Hard Drive Data Recovery

Hard Drive Data Recovery

iPod Restore

iPod Restore

Mobile Phone Data Recovery

Mobile Phone Data Recovery

Data Recovery Tools

Data Recovery Tools

© Copyright 2002-2005 DataDoctor.Biz

Home | Contact us | Downloads | Services | Resources | Terms and conditions | Site map

Languages: English Spanish French German italian portuguese Japanese Korean Chinese Russian Dutch Greek
Data Recovery Book: English Spanish French German Italian Portuguese Japanese Korean Chinese Russian Dutch Greek