[Windows 95 only.]
Allows absolute disk read/write to FAT32, FAT16, and FAT12 drives. This call replaces Int 25h/26h.
mov si, 6001h ;write normal file data. SI=0 for read
;see "In Write Mode" below for more write values
mov cx, -1 ;cx must be -1
mov dx, seg Buffer
mov ds, dx
mov bx, offset Buffer ;See below
mov dl, DriveNum ;See below
mov ax, 7305h ;Ext_ABSDiskReadWrite
int 21h
jc error_handler ;carry set means error
Buffer
Points to a DISKIO structure that contains the starting sector, the sector count and an address of the buffer to receive the data. The structure must be initialized according to Int 25h/26h documentation. The DISKIO structure has the following form:
DISKIO STRUC
diStartSector dd ? ;sector number to start
diSectors dw ? ;number of sectors
diBuffer dd ? ;address of buffer
DISKIO ENDS
DriveNum
The 1-based drive number (0=default; 1=A, 2=B, and so on).
This function operates the same as Int 25h/26h, with the following exceptions:
CX must equal -1 (only the 32-bit starting sector number form is allowed).
The drive number is 1-based (0 = default drive) and is specified in DL instead of AL.
This call does not leave a flag word on the stack like Interrupts 25h and 26h.
This call modifies only the AX register and the flags.
Bit 0 of SI specifies whether the call is to do a READ (INT 0x25) or a WRITE (INT 0x26):
Read and Write Modes:
|
SI bit 0 clear |
READ |
|
SI bit 0 set |
WRITE |
In Write Mode:
When bit 0 of SI is set (that is, WRITE mode), bits 13, 14 and 15 of SI categorize what type of data is being written:
|
15 |
14 |
13 |
Description |
|
0 |
0 |
0 |
Other/Unknown. |
|
0 |
0 |
1 |
FAT data. |
|
0 |
1 |
0 |
Directory data. |
|
0 |
1 |
1 |
Normal File data. |
|
1 |
x |
x |
Reserved. Bit 15 must be 0. |
All other bits of SI (1 through 12) are reserved and must be 0.
This provides information to apps (like compression drivers) so that they can write the data properly based upon the data type specified by the above bits.
Warnings:
Do not set these flags in an attempt to make a compression driver write uncompressed data onto a compressed drive. Compression drivers are not the only applications use these flags.
Do not set the flags improperly, this information is to be used only to indicate what "type" the data is.
If the function is successful, clears the carry flag. Otherwise, sets the carry flag, and sets the AX register with the error code as it is documented for Int 25h/26h.
When calling this function with DeviceIoControl, it is recommended to set the dwloControlCode parameter to VWIN32_DIOC_DOS_IOCTL (defined as 6 in VWIN32.H). For more information on this, see Using VWIN32 to Carry Out MS-DOS Functions.