_getdcwd
, _wgetdcwd
Pobiera pełną ścieżkę bieżącego katalogu roboczego na określonym dysku.
Składnia
char *_getdcwd(
int drive,
char *buffer,
int maxlen
);
wchar_t *_wgetdcwd(
int drive,
wchar_t *buffer,
int maxlen
);
Parametry
drive
Liczba całkowita nieujemna określająca dysk (0 = dysk domyślny, 1 = A, 2 = B itd.).
Jeśli określony dysk nie jest dostępny, wywoływana jest nieprawidłowa procedura obsługi parametrów. Jest on również wywoływany, gdy nie można określić rodzaju dysku (na przykład wymiennego, stałego, cd-ROM, dysku RAM lub dysku sieciowego). Aby uzyskać więcej informacji, zobacz Walidacja parametrów.
buffer
Lokalizacja magazynu dla ścieżki lub NULL
.
Jeśli NULL
zostanie określona, ta funkcja przydziela bufor o rozmiarze co najmniej maxlen
za pomocą metody malloc
, a zwracana wartość _getdcwd
jest wskaźnikiem do przydzielonego buforu. Bufor można zwolnić przez wywołanie free
i przekazanie go do wskaźnika.
maxlen
Niezerowa liczba całkowita, która określa maksymalną długość ścieżki, w znakach: char
for _getdcwd
i wchar_t
dla _wgetdcwd
.
Jeśli maxlen
wartość jest mniejsza lub równa zero, wywoływana jest procedura obsługi nieprawidłowych parametrów. Aby uzyskać więcej informacji, zobacz Walidacja parametrów.
Wartość zwracana
Wskaźnik do ciągu, który reprezentuje pełną ścieżkę bieżącego katalogu roboczego na określonym dysku lub NULL
, który wskazuje błąd.
Jeśli buffer
określono wartość i NULL
nie ma wystarczającej ilości pamięci do przydzielenia maxlen
znaków, wystąpi błąd i errno
zostanie ustawiony na ENOMEM
wartość . Jeśli długość ścieżki zawierającej znak o wartości null zakończenia przekracza maxlen
wartość , wystąpi błąd i errno
zostanie ustawiona na ERANGE
wartość . Aby uzyskać więcej informacji na temat tych kodów błędów, zobacz errno
, _doserrno
, _sys_errlist
i _sys_nerr
.
Uwagi
Funkcja _getdcwd
pobiera pełną ścieżkę bieżącego katalogu roboczego na określonym dysku i przechowuje go w folderze buffer
. Jeśli bieżący katalog roboczy jest ustawiony na katalog główny, ciąg kończy się ukośnikiem odwrotnym (\). Jeśli bieżący katalog roboczy jest ustawiony na katalog inny niż katalog główny, ciąg kończy się nazwą katalogu, a nie ukośnikiem odwrotnym.
_wgetdcwd
jest wersją _getdcwd
o szerokim znaku , a jego buffer
parametr i wartość zwracana są ciągami o szerokim znaku. _wgetdcwd
W przeciwnym razie i _getdcwd
zachowują się identycznie.
Ta funkcja jest bezpieczna wątkowo, mimo że zależy od GetFullPathName
elementu , który sam nie jest bezpieczny wątkowo. Można jednak naruszyć bezpieczeństwo wątków, jeśli aplikacja wielowątkowa wywołuje zarówno tę funkcję, jak i GetFullPathName
.
Wersja tej funkcji, która ma _nolock
sufiks zachowuje się identycznie z tą funkcją, z tą różnicą, że nie jest bezpieczna wątkowo i nie jest chroniona przed ingerencją innych wątków. Aby uzyskać więcej informacji, zobacz _getdcwd_nolock
, _wgetdcwd_nolock
.
Gdy _DEBUG
metody i _CRTDBG_MAP_ALLOC
są zdefiniowane, wywołania i _getdcwd
_wgetdcwd
są zastępowane przez wywołania do _getdcwd_dbg
i _wgetdcwd_dbg
, aby można było debugować alokacje pamięci. Aby uzyskać więcej informacji, zobacz_wgetdcwd_dbg
_getdcwd_dbg
.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
Procedura tchar.h | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tgetdcwd |
_getdcwd |
_getdcwd |
_wgetdcwd |
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_getdcwd |
<direct.h> |
_wgetdcwd |
<direct.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
Zobacz przykład w pliku _getdrive
.
Zobacz też
Kontrolka katalogu
_chdir
, _wchdir
_getcwd
, _wgetcwd
_getdrive
_mkdir
, _wmkdir
_rmdir
, _wrmdir