_getdcwd, _wgetdcwd

Obtém o caminho completo do diretório de trabalho atual na unidade especificada.

Sintaxe

char *_getdcwd(
   int drive,
   char *buffer,
   int maxlen
);
wchar_t *_wgetdcwd(
   int drive,
   wchar_t *buffer,
   int maxlen
);

Parâmetros

drive
Um inteiro não negativo que especifica a unidade (0 = unidade padrão, 1 = A, 2 = B e assim por diante).

Se a unidade especificada não estiver disponível, o manipulador de parâmetros inválido será chamado. Ele também é chamado quando o tipo de unidade (por exemplo, removível, fixa, CD-ROM, RAM disco ou unidade de rede) não pode ser determinado. Para obter mais informações, consulte Validação de parâmetro.

buffer
Local de armazenamento do caminho ou NULL.

Se NULL for especificado, essa função alocará um buffer de pelo menos maxlen tamanho usando malloc, e o valor de retorno de _getdcwd é um ponteiro para o buffer alocado. O buffer pode ser liberado chamando free e passando o ponteiro para ele.

maxlen
Um inteiro positivo diferente de zero que especifica o tamanho máximo do caminho em caracteres: char para _getdcwd e wchar_t para _wgetdcwd.

Se maxlen for menor ou igual a zero, o manipulador de parâmetro inválido será chamado. Para obter mais informações, consulte Validação de parâmetro.

Retornar valor

Ponteiro para uma cadeia de caracteres que representa o caminho completo do diretório de trabalho atual na unidade especificada ou NULL, que indica um erro.

Se buffer for especificado como NULL e não houver memória suficiente para alocar maxlen caracteres, ocorrerá um erro e errno será definido como ENOMEM. Se o comprimento do caminho, incluindo o caractere maxlennulo de terminação, exceder , ocorrerá um erro e errno será definido como ERANGE. Para obter mais informações sobre os códigos de erro, confira errno, _doserrno, _sys_errlist e _sys_nerr.

Comentários

A função _getdcwd obtém o caminho completo do diretório de trabalho atual na unidade especificada e o armazena em buffer. Se o diretório de trabalho atual estiver definido como o raiz, a cadeia de caracteres terminará com uma barra invertida (\). Se o diretório de trabalho atual estiver definido como um diretório que não seja o raiz, a cadeia de caracteres terminará com o nome do diretório e não com uma barra invertida.

_wgetdcwd é uma versão de caractere largo de _getdcwd; seu parâmetro buffer e o valor retornado são cadeias de caracteres largos. Caso contrário, _wgetdcwd e _getdcwd comportam-se de modo idêntico.

Esta função é thread-safe mesmo que dependa de GetFullPathName, que não é thread-safe. No entanto, você pode violar a segurança do thread se seu aplicativo multithreaded chamar essa função e GetFullPathNameo .

A versão dessa função que tem o sufixo _nolock se comporta de forma idêntica a essa função, exceto que ela não é thread-safe e não está protegida contra interferência de outros threads. Para obter mais informações, consulte _getdcwd_nolocke _wgetdcwd_nolock.

Quando _DEBUG e são definidos, as chamadas para e são substituídas por chamadas para e _CRTDBG_MAP_ALLOC_wgetdcwd_wgetdcwd_dbg, para _getdcwd_getdcwd_dbg que você possa depurar alocações de memória. Para obter mais informações, consulte_getdcwd_dbg, _wgetdcwd_dbg.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, consulte Estado global na CRT.

Mapeamentos de rotina de texto genérico

Rotina Tchar.h _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_tgetdcwd _getdcwd _getdcwd _wgetdcwd

Requisitos

Rotina Cabeçalho necessário
_getdcwd <direct.h>
_wgetdcwd <direct.h> ou <wchar.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

Veja o exemplo em _getdrive.

Confira também

Controle de diretório
_chdir, _wchdir
_getcwd, _wgetcwd
_getdrive
_mkdir, _wmkdir
_rmdir, _wrmdir