Функция GetCompressedFileSizeTransactedA (winbase.h)

[Корпорация Майкрософт настоятельно рекомендует разработчикам использовать альтернативные средства для удовлетворения потребностей вашего приложения. Многие сценарии, для работы с которыми был разработан TxF, можно реализовать с помощью более простых и доступных методов. Кроме того, TxF может быть недоступен в будущих версиях Microsoft Windows. Дополнительные сведения и альтернативы TxF см. в разделе Альтернативы использованию транзакционной NTFS.]

Извлекает фактическое количество байтов дискового хранилища, используемого для хранения указанного файла в виде транзакций. Если файл находится на томе, поддерживающем сжатие, и файл сжимается, полученное значение — сжатый размер указанного файла. Если файл находится на томе, который поддерживает разреженные файлы, и файл является разреженным файлом, полученное значение представляет собой разреженный размер указанного файла.

Синтаксис

DWORD GetCompressedFileSizeTransactedA(
  [in]            LPCSTR  lpFileName,
  [out, optional] LPDWORD lpFileSizeHigh,
  [in]            HANDLE  hTransaction
);

Параметры

[in] lpFileName

Имя файла.

Не указывайте имя файла на неимом устройстве, таком как канал или устройство связи, так как его размер файла не имеет значения.

Файл должен находиться на локальном компьютере; В противном случае функция завершается сбоем, а для последнего кода ошибки задано значение ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE.

[out, optional] lpFileSizeHigh

Указатель на переменную, которая получает DWORD высокого порядка размера сжатого файла. Возвращаемое значение функции — это значение DWORD нижнего порядка размера сжатого файла.

Этот параметр может иметь значение NULL , если параметр DWORD высокого порядка для размера сжатого файла не требуется. Файлы размером менее 4 гигабайт не нуждаются в DWORD высокого порядка.

[in] hTransaction

Дескриптор транзакции. Этот дескриптор возвращается функцией CreateTransaction .

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение представляет собой значение 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 Нет
SMB 3.0 Transparent Failover (TFO) Нет
SMB 3.0 с масштабируемыми общими папками (SO) Нет
Файловая система общего тома кластера (CSVFS) Нет
Восстанавливаемая файловая система (ReFS) Нет
 

SMB 3.0 не поддерживает TxF.

Примечание

Заголовок winbase.h определяет GetCompressedFileSizeTransacted как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

Сжатие и распаковка файлов

Функции управления файлами

GetFileSize

GetVolumeInformation

Символьные ссылки

Управление транзакциями