Função SetCurrentDirectory (winbase.h)
Altera o diretório atual para o processo atual.
Sintaxe
BOOL SetCurrentDirectory(
[in] LPCTSTR lpPathName
);
Parâmetros
[in] lpPathName
O caminho para o novo diretório atual. Esse parâmetro pode especificar um caminho relativo ou um caminho completo. Em ambos os casos, o caminho completo do diretório especificado é calculado e armazenado como o diretório atual.
Para obter mais informações, consulte Nomenclatura de arquivos, caminhos e namespaces.
Por padrão, o nome é limitado a MAX_PATH caracteres.
Dica
A partir do Windows 10, versão 1607, você pode optar por remover a limitação MAX_PATH. Para obter detalhes, consulte a seção Limitação máxima do comprimento do caminho de Nomear arquivos, caminhos e namespaces.
Importante
Definir um diretório atual com mais de MAX_PATH faz com que CreateProcessW falhe.
O caractere final antes do caractere nulo deve ser uma barra invertida ('\'). Se você não especificar a barra invertida, ela será adicionada para você. Portanto, especifique >MAX_PATH-2 caracteres para o caminho, a menos que você inclua a barra invertida à direita; nesse caso, especifique MAX_PATH-1 caracteres para o caminho.
Retornar valor
Se a função for bem-sucedida, o valor retornado será diferente de zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Comentários
Cada processo tem um único diretório atual composto por duas partes:
- Um designador de disco que é uma letra de unidade seguida por dois-pontos ou um nome de servidor e um nome de compartilhamento (\\servername\sharename)
- Um diretório no designador de disco
O diretório atual é compartilhado por todos os threads do processo: se um thread alterar o diretório atual, ele afetará todos os threads no processo.
Aplicativos multithread e código de biblioteca compartilhada devem evitar chamar a função SetCurrentDirectory devido ao risco de afetar cálculos relativos de caminho sendo executados por outros threads. Inversamente
Aplicativos multithread e código de biblioteca compartilhada devem evitar o uso de caminhos relativos para que não sejam afetados por alterações no diretório atual executadas por outros threads.
Observação
O diretório atual de um processo é bloqueado enquanto o processo está em execução. Isso impede que o diretório seja excluído, movido ou renomeado.
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 |