Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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âmetro inválido será invocado. Ele também é invocado quando o tipo de unidade (por exemplo, removível, fixa, CD-ROM, disco RAM ou unidade de rede) não pode ser determinado. Para obter mais informações, consulte Validação de parâmetro.
buffer
Local de armazenamento para o caminho ou NULL.
Se NULL for especificado, essa função alocará um buffer de pelo menos maxlen tamanho usando malloc, e o valor retornado 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á invocado. Para obter mais informações, consulte Validação de parâmetro.
Valor retornado
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 nulo de terminação, exceder maxlen, 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.
Essa função é thread-safe, embora dependa de GetFullPathName, que não é thread-safe. No entanto, você pode violar a segurança de thread se o aplicativo multithread chamar essa função e GetFullPathNameo .
A versão dessa função que tem o _nolock sufixo 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 _CRTDBG_MAP_ALLOC são definidos, as chamadas para _getdcwd e _wgetdcwd são substituídas por chamadas para _getdcwd_dbg e _wgetdcwd_dbg, para que você possa depurar alocações de memória. Para obter mais informações, consulte_wgetdcwd_dbg_getdcwd_dbg .
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no 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