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
Para definir o diretório atual, use a função SetCurrentDirectory .

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

Confira também

CreateDirectory

Funções do gerenciamento de diretórios

Getsystemdirectory

Getwindowsdirectory

RemoveDirectory

SetCurrentDirectory