将16位获取磁盘可用空间迁移到32位

时间:2015-03-09 09:15:10

标签: c++ dos diskspace

我在16位应用程序中使用此代码来获取C驱动器上的可用空间。 结果是:

127 sectors/cluster,  15747 clusters, 512 bytes/sector, 15747 total clusters.

但是当试图将我的代码迁移到32位时,像intdos,int86x这样的函数不起作用。我试图使用GetDiskFreeSpace,但我得到了这个:

Bytes/Sector = 512 Sectors/Cluster = 8 dwFreeClusters  = 41af86 dwTotalClusters = 9c3dbd

请帮我将此代码迁移到32位并获得相同的结果:

#include <dos.h>
#include <stdio.h>
union REGS inregs, outregs;
main()
{
    inregs.h.ah = 0x36;  /* get disk free space function number */
    inregs.h.dl = 3;       /* drive C: */
    intdos(&inregs, &outregs);
    printf("%d sectors/cluster, %d clusters,%d bytes/sector, %d total clers",
    outregs.x.ax, outregs.x.bx, outregs.x.cx,
    outregs.x.dx);
}

0 个答案:

没有答案