masap32中带有64位数字的winapi

问题描述:

我需要确定逻辑卷的大小并打印它。 GetDiskFreeSpaceEx正在将大小返回为64位数字(?)。我能用它做什么?masap32中带有64位数字的winapi

+0

是不是这个数字是磁盘上的可用字节数? – Nifle 2009-12-13 16:20:06

+0

你在用什么语言?向我们展示一些代码.. – Nifle 2009-12-13 16:21:25

+0

我使用masm32 我修复了某些问题, 调用GetDiskFreeSpaceEx,esi,0,addr totalsize,0 调用StrFormatByteSize64,totalsize,totalsize + 4,ADDR sizebuffer,SIZEOF totalsize -3 – 2009-12-13 17:07:33

你可以随心所欲地做任何事情,但是在masm32中进行计算有点尴尬。你应该能够填充任何其他使用64位整数的数据结构。通过将值加载到EDX:EAX(因此将前4个字节加载到EAX中,将下4个字节加载到EDX中),也可以对64位进行一些算术运算,例如除法。但是,请注意,这里可能发生溢出,需要处理或避免溢出。

如果你只是想使用此功能,您可以直接调用C运行时库中的printf函数打印出卷的大小:

invoke crt_printf,chr$("GetDiskFreeSpaceEx, total bytes: %I64d%c"), 
        dqTotalBytes,10 

然而,由于手册说“确定的总磁盘或卷上的字节数,请使用IOCTL_DISK_GET_LENGTH_INFO。“前面的代码只会告诉您当前用户有多少可用。