6

我找到了这个函数GetFileSizeEx(),它返回由结构联合形成的 PLARGE_INTEGER 中文件的大小。

typedef union _LARGE_INTEGER {
  struct {
    DWORD LowPart;
    LONG  HighPart;
  } ;
  struct {
    DWORD LowPart;
    LONG  HighPart;
  } u;
  LONGLONG QuadPart;
} LARGE_INTEGER, *PLARGE_INTEGER;

就像我称它为结构的结构一样吗?我如何计算它返回的文件大小以及它可以处理多大的信息?

4

2 回答 2

5

您可能误解了 aunion是什么。文件的长度通过以下方式获得

LARGE_INTEGER  len_li;
GetFileSizeEx (hFile, &len_li);
int64 len = (len_li.u.HighPart << 32) | len_li.u.LowPart;

或者,您可以使用现代编译器直接访问 64 位表示:

LARGE_INTEGER  len_li;
GetFileSizeEx (hFile, &len_li);
LONGLONG  len_ll = len_li.QuadPart;
于 2011-08-29T00:14:11.830 回答
1

没有联合不是结构的结构。

我建议你阅读这个问题和答案:C 中结构和联合的区别

希望这有助于澄清:)

于 2011-08-29T00:18:30.080 回答