|
Chapter – 8
Disk-BIOS Functions and Interrupts Handling With C
Introduction
In this chapter we shall discuss the important Disk-BIOS functions and other important functions which give us the freedom to uses and handle interrupts in our program with C, with the easy and short method. These functions are the back – bone of the data recovery and disk troubleshooting programming. These are the functions that make The C language a “High – level Assembly Language”.
biosdisk and _bios_disk Functions
These two functions are the most important function for our purpose of data recovery and disk troubleshooting programming. We’ll use these functions most of the time.
These two are the BIOS disk drive services and have been defined in bios.h where biosdisk operates below the level of files on raw sectors. If these functions are used even in a little bit lack of care, it can destroy the file contents and directories on a hard disk. Both biosdisk and _bios_disk functions, use interrupt 0x13 to issue disk operations directly to the BIOS. The _bios_disk function is declared in the program in the following manner:
unsigned _bios_disk(unsigned cmd, struct diskinfo_t *dinfo);
And the declaration for the bios disk function is as follows:
int biosdisk(int cmd, int drive, int head, int track,
int sector, int nsects, void *buffer);
The meaning of these parameters has been described in the following table:
Parameter |
Function |
What It Is or what it does |
cmd |
Both |
Indicates the operation to perform such as read, write, verify etc.(See the description of cmd, given next) |
dinfo |
_bios_disk |
Points to a diskinfo_t structure that contains the remaining
Parameters required by the operation.(see the description of diskinfo_t structure, given next) |
drive |
biosdisk |
Specifies which disk drive is to be used(0 for a:, 1for b: and 0x80 for first physical hard disk, 0x81 for second and so on.) |
head
track
sector |
biosdisk
|
These specify the starting sector location from which the
Operation is to be started. |
nsects |
biosdisk |
Number of sectors to read, write, verify etc. |
buffer |
biosdisk |
Memory address where data is to be read or written |
|
|