【问题标题】:winapi with 64bit number in masm32masm32中带有64位数字的winapi
【发布时间】:2009-12-13 15:50:41
【问题描述】:

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

【问题讨论】:

  • 这个数字不是磁盘上可用的字节数吗?
  • 您使用什么语言?给我们看一些代码..
  • 我使用 masm32 我解决了调用 GetDiskFreeSpaceEx, esi, 0, addr totalsize, 0 调用 StrFormatByteSize64, totalsize, totalsize + 4, ADDR sizebuffer, SIZEOF totalsize -3 的问题

标签: winapi masm32


【解决方案1】:

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

如果您只想使用此函数打印卷的大小,您可以调用 C 运行时库 printf 函数:

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

但是,正如手册中所说的“要确定磁盘或卷上的总字节数,请使用 IOCTL_DISK_GET_LENGTH_INFO。”前面的代码只告诉你当前用户有多少可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2018-06-14
    相关资源
    最近更新 更多