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