Hoe te om de Uitbreidingen te gebruiken van int. 13H in de Programmering van C kunnen wij de Functies van de Uitbreiding van int. 13H met de zelfde functies van C (int86(), int86x () enz. roepen.) , wat wij in de vroegere hoofdstukken gebruikten. Het volgende voorbeeld geeft de nadruk aan de drie functies (aanwezige, uitgebreid gelezen en de uitgebreide Uitbreidingen van de Controle schrijven)

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

Hoe te om de Uitbreidingen te gebruiken van int. 13H in de Programmering van C

Wij kunnen de Functies van de Uitbreiding van int. 13H met de zelfde functies van C (int86(), int86x () enz. roepen.) , wat wij in de vroegere hoofdstukken gebruikten. Leer het door een voorbeeld.

Het volgende voorbeeld geeft de nadruk aan de drie functies (aanwezige, uitgebreid gelezen en de uitgebreide Uitbreidingen van de Controle schrijven). Nochtans gaan wij niet gebruiken uitgebreid schrijven functie in dit hoofdstuk.

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

De programma eerste controles als de uitbreidingen of niet als de uitbreidingen aanwezig zijn voor int. 13H worden gesteund, het leest absolute sector 0 (zo MBR) van de schijf. De codage van het programma gaat op de volgende manier te werk:

/* Programma om tot sectoren voorbij 8,46 GB toegang te hebben gebruikend BIOS van int. 13 uitbreidingen */

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

/* Wijst het herkenningsteken aan het gegevenstype toe */
typedef unsigned char Byte;
typedef unsigned int Word;
typedef unsigned long DWord;

/* disk_packet wordt de structuur geladen in uitgevoerde DS:SI en bevel */

struct disk_packet
{
Byte size_pack; // De grootte van pakket moet 16 of 16 zijn +
Byte reserved1; // Gereserveerd
Byte no_of_blocks;// Aantal blokken voor overdracht
Byte reserved2; // Gereserveerd

/* Adres in formaat Segment:Offset */
Word offset; //offset address
Word segment; //segment address

/* Om de Schijf zelfs van Capaciteit van te steunen 1152921504.607 GB */

DWord lba1;
DWord lba2;
}disk_pack;

/* Te controleren functie als de Uitbreidingen worden gesteund */

void check_ext_present()
{
union REGS inregs, outregs; /* De Registers van de input en
Output */
inregs.h.ah=0x41; /* Te controleren functie
Aanwezige uitbreiding */
inregs.x.bx=0x55AA;
inregs.h.dl=0x80; /* Drijf Nr voor eerste Harde Schijf */

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

if(outregs.x.cflag)
{
/* Gesteunde niet uitbreiding */
printf("\nBios extension not supported");
exit(1);
}

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

/* Aanwezige uitbreiding */
printf("\nExtended I/O supported");
}

/* Functie om de Sector te lezen */

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

/* verzoek om MBR van harde schijf 1 */
/* Lees Absolute sector 0 */

disk_pack.lba1=0; /* Het adres LBA, bevat eerst
32 bits */

/* Wij require(drijven < normaal 2,1 T.B) om te plaatsen
slechts dit */

disk_pack.lba2=0; // Duur 32 beetjeadres
inregs.h.ah=0x42; // Te lezen functie
inregs.h.dl=0x80; // Het Aantal van de aandrijving voor Eerste Harde Schijf inregs.x.si = FP_OFF (&disk_pack); / * Maak punt DS:SI
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");
}

//// Schrijf de Functie van de Sector \\\\

void write_sector()
{

/* Het zal worden geschreven op dezelfde manier als functioneren read_sectors, behalve het Aantal van de Functie, dat 0x43 in deze functie zal zijn. Wij zullen uitgebreid schrijven functie in volgende hoofdstukken bespreken.

Alvorens deze Functie Te gebruiken gelieve te verifiëren controleer en wat u die zijn gaan doen. U zou de juiste kennis moeten hebben van wat u gaat doen. Het gebruik van deze functie in gebrek aan kennis of kan zorgeloos uw gegevens vernietigen. */

}

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

/* buffer om MBR te houden */
Byte mbr[512];
clrscr();

/* controle voor BIOS aanwezige uitbreiding */
check_ext_present();

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

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

 

Commentaren op Codage van het programma

typedef Wijst het herkenningsteken aan het gegevenstype dusdanig dat toe typedef niet ondertekende klusjesbyte; wijst herkenningstekenbyte voor het gegevenstype klusje toe. Zo ook wordt herkenningstekenWord toegewezen aan int. en DWord wordt lang toegewezen aan.

De disk_packetstructuur wordt geladen in DS:SI en het bevel (zoals uitgebreid gelezen, uitgebreid schrijf of verifiëer enz.) wordt uitgevoerd. Zie de functies van voordien de gegeven Uitbreidingen van IBM/van lidstaten int. 13H (Functie 41H om te functioneren 49H).

De check_ext_present () functiecontroles als de uitbreidingen of niet beschikbaar/gesteund zijn. De functie wordt geroepen met BX=55AAH (inregs.x.bx=0x55AA;) en als de uitbreidingen worden gesteund wordt het register BX geplaatst aan AA55H. (Zie voordien gegeven Functie 41H)

Read_sectors van de Functie wordt gebruikt om de absolute sector van de schijf te lezen, gespecificeerd=wordt= die door disk_pack.lba1. In dit programma hebben wij disk_pack.lba1=0 gegeven, dus wij gaan absolute sector 0 (zie hieronder de Nota) lezen zo gaand MBR van de schijf lezen.

De write_sectorfunctie is ook zelfde die read_sectors zullen functioneren en wordt geschreven op de zelfde manier maar met de verschillende opties van de Functie. Wij zullen het in de volgende hoofdstukken gebruiken.

Note:

Wij lezen de schijfsectoren op de volgende twee manieren:

  1. Relatieve Gelezen Sector (of schrijf)
  2. Absolute Gelezen Sector (of schrijf)

In Relatieve Gelezen Sector lezen wij de schijfsectoren overeenkomstig (Cilinder, Hoofd en Sector) meetkunde CHS van de schijf. In relatieve gelezen sector is MBR van de schijf (Eerste Sector van de schijf) op Cilinder 0, hoofd 0 en Sector 1.

In de Absolute lezing van de schijfsectoren, te hoeven wij niet om de Cilinder of de Hoofdaantallen in ons programma te specificeren. De absolute sectoren worden geteld van absolute sector 0.

Aldus als wij MBR van de schijf (Eerste sector van de schijf) gaan lezen, gaan wij absolute sector 0 lezen. Het is het werk van BIOS om het absolute sectoraantal aan zijn overeenkomstig Cilinder, Hoofd en aantal van de Sector om te zetten.

Zoals in absolute sectorlezing (of het schrijven), moeten wij slechts de absolute sectoren binnen de lijn in de verrichtingen zoals volledige schijflezing berekenen of schrijvend, terwijl in het geval van relatieve sectorlezing (of het schrijven), wij drie lijnen in een tijd moeten in werking stellen voor het berekenen CHS daarom zijn de absolute sectorlezing/schrijven veel sneller dan relatieve sectorlezing/het schrijven.

Bijvoorbeeld, als wij om het even welke harde schijf met de 16 hoofden (kanten) hebben, toont 12 Cilinders en met 63 sectoren, de daarna gegeven lijst, de procedure en het verschil van zowel de lezingsmethodes als toont zo hoe de absolute sectorbenadering kan onze tijd maken die programma's neemt (zoals het volledige schijflezing/schrijven of volledige schijf het afvegen programma's enz.) om veel sneller te lopen:

Het relatieve Lezen van Sectoren

De absolute lezing van de Sector

Cilinder = 0, Hoofd = 0, Sector = 1

Absolute Sector = 0

Cilinder = 0, Hoofd = 0, Sector = 2

Absolute Sector = 1

Cilinder = 0, Hoofd = 0, Sector = 3

Absolute Sector = 2

.
.
.
.

.
.
.
.

Cilinder = 0, Hoofd = 0, Sector = 62

Absolute Sector = 61

Cilinder = 0, Hoofd = 0, Sector = 63

Absolute Sector = 62

Cilinder = 0, Hoofd = 1, Sector = 1

Absolute Sector = 63

Cilinder = 0, Hoofd = 1, Sector = 2

Absolute Sector = 64

Cilinder = 0, Hoofd = 1, Sector = 3

Absolute Sector = 65

Cilinder = 0, Hoofd = 1, Sector = 4

Absolute Sector = 66

.
.
.
.

.
.
.
.

Cilinder = 0, Hoofd = 1, Sector = 63

Absolute Sector = 125

Cilinder = 0, Hoofd = 2, Sector = 1

Absolute Sector = 126

Cilinder = 0, Hoofd = 2, Sector = 2

Absolute Sector = 127

Cilinder = 0, Hoofd = 2, Sector = 3

Absolute Sector = 128

.
.
.
.

.
.
.
.

Cilinder = 0, Hoofd = 15, Sector = 63

Absolute Sector = 1007

Cilinder = 1, Hoofd = 0, Sector = 1

Absolute Sector = 1008

Cilinder = 1, Hoofd = 0, Sector = 2

Absolute Sector = 1009

Cilinder = 1, Hoofd = 0, Sector = 3

Absolute Sector = 1010

.
.
.
.

.
.
.
.

Cilinder = 1, Hoofd = 0, Sector = 63

Absolute Sector = 1070

Cilinder = 1, Hoofd = 1, Sector = 1

Absolute Sector = 1071

Cilinder = 1, Hoofd = 1, Sector = 2

Absolute Sector = 1072

Cilinder = 1, Hoofd = 1, Sector = 3

Absolute Sector = 1073

.
.
.
.

.
.
.
.

Cilinder = 1, Hoofd = 15, Sector = 63

Absolute Sector = 2015

Cilinder = 2, Hoofd = 0, Sector = 1

Absolute Sector = 2016

Cilinder = 2, Hoofd = 0, Sector = 2

Absolute Sector = 2017

Cilinder = 2, Hoofd = 0, Sector = 3

Absolute Sector = 2018

.
.
.
.

.
.
.
.

Cilinder = 11, Hoofd = 15, Sector = 60

Absolute Sector = 12092

Cilinder = 11, Hoofd = 15, Sector = 61

Absolute Sector = 12093

Cilinder = 11, Hoofd = 15, Sector = 62

Absolute Sector = 12094

Cilinder = 11, Hoofd = 15, Sector = 63

Absolute Sector = 12095

 

De informatie van verdelingslijst van MBR, die door om het even welke schijf MBR getoond wordt die hulpmiddel analyseert, is gegeven hieronder:

In de bovengenoemde informatie, zijn de relatieve sectoraantallen voor de aanvang van beide verdelingen 63 en respectievelijk 11277630, die vrij van verdelingen zijn en volgens het aantal sectoren geteld, beschikbaar in schijf.

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