Compartilhar via


Função GetLongPathNameTransactedA (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.]

Converte o caminho especificado em seu formato longo como uma operação transacionada.

Para executar essa operação sem uma transação, use a função GetLongPathName .

Para obter mais informações sobre nomes de arquivo e caminho, consulte Arquivos de nomenclatura, caminhos e namespaces.

Sintaxe

DWORD GetLongPathNameTransactedA(
  [in]  LPCSTR lpszShortPath,
  [out] LPSTR  lpszLongPath,
  [in]  DWORD  cchBuffer,
  [in]  HANDLE hTransaction
);

Parâmetros

[in] lpszShortPath

O caminho a ser convertido.

Por padrão, o nome é limitado a MAX_PATH caracteres. Para estender esse limite para 32.767 caracteres largos, acrescente "\\?\" ao caminho. Para obter mais informações, confira Nomear arquivos, caminhos e namespaces.

Dica

A partir do Windows 10, versão 1607, você pode optar por remover a limitação de MAX_PATH sem acrescentar "\\?\". Consulte a seção "Limitação máxima do comprimento do caminho" de Arquivos de Nomenclatura, Caminhos e Namespaces para obter detalhes.

O caminho 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] lpszLongPath

Um ponteiro para o buffer para receber o caminho longo.

Você pode usar o mesmo buffer usado para o parâmetro lpszShortPath .

[in] cchBuffer

O tamanho do buffer para o qual o lpszLongPath aponta, em TCHARs.

[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 comprimento, em TCHARs, da cadeia de caracteres copiada para lpszLongPath, sem incluir o caractere nulo de terminação.

Se o buffer lpBuffer for muito pequeno para conter o caminho, o valor retornado será o tamanho, em TCHARs, do buffer necessário para manter o caminho e o caractere nulo de terminação.

Se a função falhar por qualquer outro motivo, como se o arquivo não existir, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Em muitos sistemas de arquivos, um nome de arquivo curto contém um caractere til (~). No entanto, nem todos os sistemas de arquivos seguem essa convenção. Portanto, não suponha que você possa ignorar a chamada de GetLongPathNameTransacted se o caminho não contiver um caractere til (~).

Se um caminho longo não for encontrado, essa função retornará o nome especificado no parâmetro lpszShortPath no parâmetro lpszLongPath .

Se o valor retornado for maior que o valor especificado em cchBuffer, você poderá chamar a função novamente com um buffer grande o suficiente para manter o caminho. Para obter um exemplo desse caso, consulte a seção Código de exemplo para GetFullPathName.

Nota Embora o valor retornado nesse caso seja um comprimento que inclui o caractere nulo de terminação, o valor retornado em caso de êxito não inclui o caractere nulo de terminação na contagem.
 
É possível ter acesso a um arquivo ou diretório, mas não ter acesso a alguns dos diretórios pai desse arquivo ou diretório. Como resultado, GetLongPathNameTransacted pode falhar quando não é possível consultar o diretório pai de um componente de caminho para determinar o nome longo desse componente. Esse marcar pode ser ignorado para componentes de diretório que têm extensões de arquivo com mais de 3 caracteres ou comprimentos totais maiores que 12 caracteres. Para obter mais informações, consulte a seção Nomes curtos versus longos de Arquivos de Nomenclatura, Caminhos e Namespaces.

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 GetLongPathNameTransacted 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

Funções de gerenciamento de arquivos

GetFullPathNameTransacted

GetShortPathName

Como nomear arquivos, caminhos e namespaces

NTFS transacional