Получить размер файла в Windows - PullRequest
6 голосов
/ 29 августа 2011

Я нашел эту функцию GetFileSizeEx () , которая возвращает размер файла в PLARGE_INTEGER, который сформирован объединением структур.

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

Это так же, как если бы яназывать это структурой структур?Как определить размер файла, который он вернул, и какую информацию он может обработать?

Ответы [ 2 ]

4 голосов
/ 29 августа 2011

Вы, вероятно, неправильно понимаете, что такое union.Длина файла получается как

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;
1 голос
/ 29 августа 2011

нет, объединение НЕ является структурой структур.

Я предлагаю вам прочитать этот вопрос и ответы: Разница между структурой и объединением в C

надеждаэто помогает уточнить:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...