Функция GetCompressedFileSizeW (fileapi.h)
Извлекает фактическое количество байтов дискового хранилища, используемого для хранения указанного файла. Если файл находится на томе, поддерживающем сжатие, и файл сжимается, полученное значение представляет собой сжатый размер указанного файла. Если файл находится на томе, поддерживающем разреженные файлы, и файл является разреженным, полученное значение — это разреженный размер указанного файла.
Чтобы выполнить эту операцию в виде транзакции, используйте функцию GetCompressedFileSizeTransacted .
Синтаксис
DWORD GetCompressedFileSizeW(
[in] LPCWSTR lpFileName,
[out, optional] LPDWORD lpFileSizeHigh
);
Параметры
[in] lpFileName
Имя файла.
Не указывайте имя файла на несекционном устройстве, таком как канал или устройство связи, так как его размер файла не имеет значения.
Этот параметр может включать путь.
По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 символов в ширину, добавьте к пути "\\?\". Дополнительные сведения см. в статье Именование файлов, путей и пространств имен.
Совет
Начиная с Windows 10 версии 1607, вы можете согласиться на удаление ограничения MAX_PATH без добавления "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .
[out, optional] lpFileSizeHigh
DWORD высокого порядка размера сжатого файла. Возвращаемое значение функции — это DWORD нижнего порядка размера сжатого файла.
Этот параметр может иметь значение NULL , если DWORD высокого порядка для сжатого размера файла не требуется. Файлы размером менее 4 гигабайт не требуют DWORD высокого порядка.
Возвращаемое значение
Если функция выполнена успешно, возвращается значение DWORD низкого порядка фактического числа байтов дискового хранилища, используемого для хранения указанного файла, а если значение lpFileSizeHigh не равно NULL, функция помещает DWORD высокого порядка этого фактического значения в DWORD , на который указывает этот параметр. Это размер сжатого файла для сжатых файлов, фактический размер файла для несжатого файла.
Если функция завершается сбоем и lpFileSizeHigh имеет значение NULL, возвращаемое значение будет INVALID_FILE_SIZE. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Если возвращаемое значение равно INVALID_FILE_SIZE а значение lpFileSizeHigh не равно NULL, приложение должно вызвать Метод GetLastError , чтобы определить, выполнена ли функция (значение равно NO_ERROR) или сбой (значение отличается от NO_ERROR).
Комментарии
Приложение может определить, сжимается ли том, вызвав Метод GetVolumeInformation, а затем проверив состояние флага FS_VOL_IS_COMPRESSED в значении DWORD , на которое указывает параметр lpFileSystemFlags этой функции.
Если файл не находится на томе, который поддерживает сжатие или разреженные файлы, или если файл не сжатый или разреженный файл, полученное значение будет фактическим размером файла, таким же, как значение, возвращаемое вызовом GetFileSize.
Поведение символьной ссылки. Если путь указывает на символьную ссылку, функция возвращает размер файла целевого объекта.
В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Да |
Прозрачная отработка отказа (TFO) SMB 3.0 | Да |
SMB 3.0 с масштабируемыми общими папками (SO) | Да |
Файловая система общего тома кластера (CSVFS) | Да |
Восстанавливаемая файловая система (ReFS) | Да |
Примечание
Заголовок fileapi.h определяет GetCompressedFileSize в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | fileapi.h (включая Windows.h, WinBase.h, Fileapi.h, Windows.h, WinBase.h, Fileapi.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |