Função GetCompressedFileSizeTransactedA (winbase.h)

[A Microsoft recomenda fortemente que os desenvolvedores utilizem meios alternativos para atender às necessidades do seu aplicativo. Muitos cenários para os quais o TxF foi desenvolvido podem ser obtidos por meio de técnicas mais simples e prontamente disponíveis. Além disso, o TxF pode não estar disponível em versões futuras do Microsoft Windows. Para obter mais informações e alternativas ao TxF, confira Alternativas ao uso do NTFS transacional.]

Recupera o número real de bytes de armazenamento em disco usados para armazenar um arquivo especificado como uma operação transacionada. Se o arquivo estiver localizado em um volume que dá suporte à compactação e o arquivo for compactado, o valor obtido será o tamanho compactado do arquivo especificado. Se o arquivo estiver localizado em um volume que dá suporte a arquivos esparsos e o arquivo for um arquivo esparso, o valor obtido será o tamanho esparso do arquivo especificado.

Sintaxe

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

Parâmetros

[in] lpFileName

O nome do arquivo.

Não especifique o nome de um arquivo em um dispositivo sem acesso, como um pipe ou um dispositivo de comunicação, pois seu tamanho de arquivo não tem significado.

O arquivo deve residir no computador local; caso contrário, a função falhará e o último código de erro será definido como ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE.

[out, optional] lpFileSizeHigh

Um ponteiro para uma variável que recebe o DWORD de alta ordem do tamanho do arquivo compactado. O valor retornado da função é o DWORD de baixa ordem do tamanho do arquivo compactado.

Esse parâmetro poderá ser NULL se o DWORD de alta ordem do tamanho do arquivo compactado não for necessário. Arquivos com menos de 4 gigabytes de tamanho não precisam do DWORD de alta ordem.

[in] hTransaction

Um identificador para a transação. Esse identificador é retornado pela função CreateTransaction .

Retornar valor

Se a função for bem-sucedida, o valor retornado será o DWORD de baixa ordem do número real de bytes de armazenamento em disco usados para armazenar o arquivo especificado e, se lpFileSizeHigh for não NULL, a função colocará o DWORD de alta ordem desse valor real no DWORD apontado por esse parâmetro. Esse é o tamanho do arquivo compactado para arquivos compactados, o tamanho real do arquivo para arquivos não compactados.

Se a função falhar e lpFileSizeHigh for NULL, o valor retornado será INVALID_FILE_SIZE. Para obter informações de erro estendidas, chame GetLastError.

Se o valor retornado for INVALID_FILE_SIZE e lpFileSizeHigh for não NULL, um aplicativo deverá chamar GetLastError para determinar se a função foi bem-sucedida (o valor é NO_ERROR) ou falhou (o valor é diferente de NO_ERROR).

Comentários

Um aplicativo pode determinar se um volume é compactado chamando GetVolumeInformation e, em seguida, verificando a status do sinalizador FS_VOL_IS_COMPRESSED no valor DWORD apontado pelo parâmetro lpFileSystemFlags dessa função.

Se o arquivo não estiver localizado em um volume que dê suporte à compactação ou arquivos esparsos ou se o arquivo não for compactado ou um arquivo esparso, o valor obtido será o tamanho real do arquivo, o mesmo que o valor retornado por uma chamada para GetFileSize.

Links simbólicos: Se o caminho apontar para um link simbólico, a função retornará o tamanho do arquivo do destino.

No Windows 8 e Windows Server 2012, essa função é compatível com as tecnologias a seguir.

Tecnologia Com suporte
Protocolo SMB (SMB) 3.0 No
TFO (Failover transparente) do SMB 3.0 No
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) No
Sistema de arquivos de Volume Compartilhado Clusterizado (CsvFS) No
ReFS (Sistema de Arquivos Resiliente) No
 

O SMB 3.0 não dá suporte a TxF.

Observação

O cabeçalho winbase.h define GetCompressedFileSizeTransacted como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winbase.h (incluir Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

Descompactação e compactação de arquivo

Funções de gerenciamento de arquivos

GetFileSize

GetVolumeInformation

Links simbólicos

Gerenciamento de transações