Function 58, subfunction 15 - get information on file system.
Parameters:
- eax = 58 - function number
- ebx = pointer to the information structure
Format of the information structure:
- +0: dword: 15 = subfunction number
- +4: dword: ignored
- +8: dword: ignored
- +12 = +0xC: dword: ignored
- +16 = +0x10: dword: ignored
- +20 = +0x14: (only second character is checked)
/rd=/RAMDISK or /hd=/HARDDISK
Returned value:
- if the second character does not belong to set {'r','R','h','H'}:
- eax = 3
- ebx = ecx = dword [fileinfo] = 0
- for ramdisk:
- eax = 0 (success)
- ebx = total number of clusters = 2847
- ecx = number of free clusters
- dword [fileinfo] = cluster size = 512
- for hard disk: base and partition are defined by subfunctions
7 and 8 of function 21:
- eax = 0 (success)
- ebx = total number of clusters
- ecx = number of free clusters
- dword [fileinfo] = cluster size (in bytes)
Remarks:
- Be not surprised to strange layout of 4th returned parameter
- when this code was writing, at system calls application got
only registers eax,ebx,ecx (from pushad-structure transmitted
as argument to the system function). Now it is corrected, so,
probably, it is meaningful to return cluster size in edx, while
this function is not used yet.
- There exists also subfunction 11 of function 18,
which returns information on file system. From the full table
of disk subsystem it is possible to deduce cluster size (there
it is stored in sectors) and total number of clusters
for hard disks.