Implement INT 21h, AH = 36h "Get Free Disk Space".


svn path=/trunk/; revision=67504
This commit is contained in:
Aleksandar Andrejevic
2015-05-01 23:04:03 +00:00
parent 5f7df0d9ad
commit 9b5a4bf8a2

View File

@@ -832,6 +832,38 @@ VOID WINAPI DosInt21h(LPWORD Stack)
break;
}
/* Get Free Disk Space */
case 0x36:
{
CHAR RootPath[3] = "X:\\";
DWORD SectorsPerCluster;
DWORD BytesPerSector;
DWORD NumberOfFreeClusters;
DWORD TotalNumberOfClusters;
if (getDL() == 0) RootPath[0] = 'A' + CurrentDrive;
else RootPath[0] = 'A' + getDL() - 1;
if (GetDiskFreeSpaceA(RootPath,
&SectorsPerCluster,
&BytesPerSector,
&NumberOfFreeClusters,
&TotalNumberOfClusters))
{
setAX(LOWORD(SectorsPerCluster));
setCX(LOWORD(BytesPerSector));
setBX(LOWORD(NumberOfFreeClusters));
setDX(LOWORD(TotalNumberOfClusters));
}
else
{
/* Error */
setAX(0xFFFF);
}
break;
}
/* SWITCH character - AVAILDEV */
case 0x37:
{