Função GetCurrentDirectory (winbase.h)
Recupera o diretório atual para o processo atual.
Sintaxe
DWORD GetCurrentDirectory(
[in] DWORD nBufferLength,
[out] LPTSTR lpBuffer
);
Parâmetros
[in] nBufferLength
O comprimento do buffer para a cadeia de caracteres de diretório atual, em TCHARs. O comprimento do buffer deve incluir espaço para um caractere nulo de terminação.
[out] lpBuffer
Um ponteiro para o buffer que recebe a cadeia de caracteres de diretório atual. Essa cadeia de caracteres terminada em nulo especifica o caminho absoluto para o diretório atual.
Para determinar o tamanho do buffer necessário, defina esse parâmetro como NULL e o parâmetro nBufferLength como 0.
Retornar valor
Se a função for bem-sucedida, o valor retornado especificará o número de caracteres gravados no buffer, não incluindo o caractere nulo de terminação.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Se o buffer apontado por lpBuffer não for grande o suficiente, o valor retornado especificará o tamanho necessário do buffer, em caracteres, incluindo o caractere de terminação nula.
Comentários
Cada processo tem um único diretório atual que consiste em duas partes:
- Um designador de disco que é uma letra de unidade seguida por dois-pontos ou um nome de servidor seguido por um nome de compartilhamento (\\servername\sharename)
- Um diretório no designador de disco
Aplicativos multithread e código de biblioteca compartilhada não devem usar o
Função GetCurrentDirectory e deve evitar o uso de nomes de caminho relativos. O estado do diretório atual escrito pela função SetCurrentDirectory é armazenado como uma variável global em cada processo, portanto, aplicativos multithread não podem usar esse valor de forma confiável sem possíveis dados corrompidos de outros threads que também podem estar lendo ou definindo esse valor. Essa limitação também se aplica às funções SetCurrentDirectory e GetFullPathName . A exceção é quando o aplicativo tem a garantia de estar em execução em um único thread, por exemplo, analisando nomes de arquivo da cadeia de caracteres de argumento de linha de comando no thread main antes de criar threads adicionais. O uso de nomes de caminho relativo em aplicativos multithread ou código de biblioteca compartilhada pode gerar resultados imprevisíveis e não tem suporte.
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 | 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 Clusterizado (CsvFS) | Sim |
ReFS (Sistema de Arquivos Resiliente) | Sim |
Exemplos
Para obter um exemplo, consulte Alterando o diretório atual.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [aplicativos da área de trabalho | aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | winbase.h (inclua Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |