Partilhar via


_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 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