Udostępnij za pośrednictwem


_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 ENOMEMwartość . Jeśli długość ścieżki zawierającej znak o wartości null zakończenia przekracza maxlenwartość , wystąpi błąd i errno zostanie ustawiona na ERANGEwartość . Aby uzyskać więcej informacji na temat tych kodów błędów, zobacz errno, _doserrno, _sys_errlisti _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ą _getdcwdo 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 GetFullPathNameelementu , 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