Compartilhar via


Função GetLongPathNameA (fileapi.h)

Converte o caminho especificado em seu formulário longo.

Para executar essa operação como uma operação transacionada, use a função GetLongPathNameTransacted.

Para obter mais informações sobre nomes de arquivo e caminho, consulte Arquivos de Nomenclatura, Caminhos e Namespaces.

Sintaxe

DWORD GetLongPathNameA(
  [in]  LPCSTR lpszShortPath,
  [out] LPSTR  lpszLongPath,
  [in]  DWORD  cchBuffer
);

Parâmetros

[in] lpszShortPath

O caminho a ser convertido.

[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 lpszLongPath aponta para, em TCHARs.

Valor de retorno

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 lpBuffer buffer 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.

Observações

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

Se o arquivo ou diretório existir, mas um caminho longo não for encontrado, GetLongPathName bem-sucedido, tendo copiado a cadeia de caracteres referenciada pelo parâmetro lpszShortPath para o buffer referenciado pelo 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.

Observação Embora o valor retornado nesse caso seja um comprimento que inclui o caractere nulo de encerramento, o valor retornado no ê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, GetLongPathName pode falhar quando não for possível consultar o diretório pai de um componente de caminho para determinar o nome longo desse componente. Essa verificação pode ser ignorada 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 Short vs. Long Names de arquivos de nomenclatura , caminhos e namespaces.

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

Tecnologia Suportado
Protocolo SMB (Bloco de Mensagens do Servidor) 3.0 Sim
TFO (Failover Transparente) do SMB 3.0 Sim
SMB 3.0 com Compartilhamentos de Arquivos de Expansão (SO) Sim
Sistema de Arquivos de Volume Compartilhado de Cluster (CsvFS) Sim
ReFS (Sistema de Arquivos Resiliente) Sim
 

Exemplos

Para obter um exemplo que usa GetLongPathName, consulte a seção Código de Exemplo para GetFullPathName.

Nota

O cabeçalho fileapi.h define GetLongPathName como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [aplicativos da área de trabalho | Aplicativos UWP]
servidor com suporte mínimo Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
da Plataforma de Destino Windows
cabeçalho fileapi.h (inclua Windows.h)
biblioteca Kernel32.lib
de DLL Kernel32.dll

Consulte também

Funções de gerenciamento de arquivos

GetFullPathName

GetLongPathNameTransacted

GetShortPathName

arquivos de nomenclatura, caminhos e namespaces