Cómo utilizar las extensiones INTERNAS 13H en C que programa, podemos llamar las funciones de extensión de 13H INTERNO con las mismas funciones de C (int86 (), int86x () etc.), que utilizábamos en los capítulos anteriores. El ejemplo siguiente da el foco a las tres funciones (las extensiones del cheque presentes, haber leído extendida y haber extendido escriben)

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

Cómo utilizar las extensiones INTERNAS 13H en la programación de C

Podemos llamar las funciones de extensión de 13H INTERNO con las mismas funciones de C (int86 (), int86x () etc.), que utilizábamos en los capítulos anteriores. Aprendámoslo por un ejemplo.

El ejemplo siguiente da el foco a las tres funciones (las extensiones del cheque presentes, haber leído extendida y haber extendido escriben). Sin embargo no vamos al uso ampliado escribimos la función en este capítulo.

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

Del programa los cheques si se apoyan las extensiones o no si las extensiones están presentes para 13H INTERNO, primero lee el sector absoluto 0 (así MBR) del disco. La codificación del programa procede de la manera siguiente:

/* Programa para tener acceso a sectores más allá de 8.46 GB usando 13 extensiones INTERNAS del 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()
{

/* Será escrito de la misma forma que funcionan los read_sectors, a menos que el número de la función, que será 0x43 en esta función. Discutiremos extendido escribimos la función en los capítulos siguientes.

Antes de usar esta función comprobar y verificar por favor cuáles son tú que va a hacer. Debes tener el conocimiento apropiado de lo que vas a hacer. El uso de esta función en la carencia del conocimiento o puede destruir negligentemente tus datos.*/

}

/// 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]);
}
}

 

Comentarios sobre la codificación del programa

el typedef asigna a identificador al tipo de datos tales que octeto sin firmar del carbón del typedef; asigna el octeto del identificador para el tipo de datos carbón. La palabra del identificador se asigna semejantemente a interno y DWord se asigna para desear.

La estructura del disk_packet se carga en el DS: Se ejecuta el SI y el comando (tal como haber leído extendida, extendido escribir o verificar el etc.). Ver las funciones de las extensiones INTERNAS 13H de IBM/MS (función 41H a funcionar 49H) dadas antes.

Los controles de funcionamiento check_ext_present () si las extensiones son disponibles/apoyadas o no. La función se llama con BX=55AAH (inregs.x.bx=0x55AA;) y si se apoyan las extensiones el registro de BX se fija a AA55H. (Véase la función 41H dada antes)

Los read_sectors de la función se utilizan para leer el sector absoluto del disco, especificado por disk_pack.lba1. En este programa hemos dado disk_pack.lba1=0, así vamos a leer el sector absoluto 0 (véase la nota abajo) que va así a leer el MBR del disco.

La función del write_sector es también igual que los read_sectors funcionan y serán escritos de la misma forma pero con las diversas opciones de la función. La utilizaremos en los capítulos siguientes.

Nota:

Leímos los sectores del disco de las dos maneras siguientes:

  1. Sector relativo leído (o escribir)
  2. El sector absoluto leyó (o escribir)

En el sector relativo leído leímos los sectores del disco de acuerdo con la geometría de CHS (cilindro, principal y sector) del disco. En el sector relativo leído el MBR del disco (primer sector del disco) está en el cilindro 0, la cabeza 0 y el sector 1.

En la lectura absoluta de los sectores del disco, no necesitamos especificar el cilindro o los números principales en nuestro programa. Los sectores absolutos se cuentan del sector absoluto 0.

Así si vamos a leer el MBR del disco (primer sector del disco), vamos a leer el sector absoluto 0. Es el trabajo del BIOS para convertir el número absoluto del sector a su número correspondiente del cilindro, principal y del sector.

Como en la lectura absoluta del sector (o la escritura), tenemos que calcular solamente los sectores absolutos dentro del lazo en las operaciones tales como lectura entera del disco o la escritura, mientras que en caso de la lectura relativa del sector (o de la escritura), necesitamos funcionar tres lazos a la vez para calcular la lectura/la escritura absolutas del sector de CHS por lo tanto es mucho más rápida que la lectura/la escritura relativas del sector.

Por ejemplo, si tenemos cualquier disco duro con las 16 cabezas (lados), 12 cilindros y con 63 sectores, la tabla dada después, demostraciones el procedimiento y la diferencia de los ambos los métodos y así demostraciones de la lectura cómo el acercamiento absoluto del sector puede hacer nuestro tiempo que lleva programas (tales como escritura entera de la lectura del disco o disco entero que limpia los programas etc.) el funcionamiento mucho más rápidamente:

Lectura relativa de los sectores

Lectura absoluta del sector

Cilindro =0, =0 principal, sector = 1

        Sector absoluto = 0

Cilindro =0, =0 principal, sector = 2

        Sector absoluto = 1

Cilindro =0, =0 principal, sector = 3

        Sector absoluto = 2

                  .
                  .
                  .
                  . 

                  .
                  .
                  .
                  . 

Cilindro =0, =0 principal, sector = 62

        Sector absoluto = 61

Cilindro =0, =0 principal, sector = 63

        Sector absoluto = 62

Cilindro =0, =1 principal, sector = 1

        Sector absoluto = 63

Cilindro =0, =1 principal, sector = 2

        Sector absoluto = 64

Cilindro =0, =1 principal, sector = 3

        Sector absoluto = 65

Cilindro =0, =1 principal, sector = 4

        Sector absoluto = 66

                  .
                  .
                  .
                  . 

                  .
                  .
                  .
                  . 

Cilindro =0, =1 principal, sector = 63

        Sector absoluto = 125

Cilindro =0, =2 principal, sector = 1

        Sector absoluto = 126

Cilindro =0, =2 principal, sector = 2

        Sector absoluto = 127

Cilindro =0, =2 principal, sector = 3

        Sector absoluto = 128

                  .
                  .
                  .
                  . 

                  .
                  .
                  .
                  . 

Cilindro =0, =15 principal, sector = 63

        Sector absoluto = 1007

Cilindro =1, =0 principal, sector = 1

        Sector absoluto = 1008

Cilindro =1, =0 principal, sector = 2

        Sector absoluto = 1009

Cilindro =1, =0 principal, sector = 3

        Sector absoluto = 1010

                  .
                  .
                  .
                  . 

                  .
                  .
                  .
                  . 

Cilindro =1, =0 principal, sector = 63

        Sector absoluto = 1070

Cilindro =1, =1 principal, sector = 1

        Sector absoluto = 1071

Cilindro =1, =1 principal, sector = 2

        Sector absoluto = 1072

Cilindro =1, =1 principal, sector = 3

        Sector absoluto = 1073

                  .
                  .
                  .
                  . 

                  .
                  .
                  .
                  . 

Cilindro =1, =15 principal, sector = 63

        Sector absoluto = 2015

Cilindro =2, =0 principal, sector = 1

        Sector absoluto = 2016

Cilindro =2, =0 principal, sector = 2

        Sector absoluto = 2017

Cilindro =2, =0 principal, sector = 3

        Sector absoluto = 2018

                  .
                  .
                  .
                  . 

                  .
                  .
                  .
                  . 

Cilindro =11, =15 principal, sector = 60

        Sector absoluto = 12092

Cilindro =11, =15 principal, sector = 61

        Sector absoluto = 12093

Cilindro =11, =15 principal, sector = 62

        Sector absoluto = 12094

Cilindro =11, =15 principal, sector = 63

        Sector absoluto = 12095

 

La información de la tabla de la partición de MBR, que es exhibido por cualquier disco MBR que analiza la herramienta, se ha dado abajo:

En la información antedicha, los números relativos del sector para comenzar de ambas particiones son 63 y 11277630 respectivamente, que están libres de particiones y se cuentan según el número de sectores, disponible en disco.

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