_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â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 GetFullPathName
o .
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_nolock
e _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