mirror of
https://github.com/reactos/reactos.git
synced 2026-07-03 11:44:24 +08:00
[NTVDM]
Implement INT 21h, AH = 36h "Get Free Disk Space". svn path=/trunk/; revision=67504
This commit is contained in:
@@ -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:
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user