다음을 통해 공유


GetCurrentDirectory 함수(winbase.h)

현재 프로세스의 현재 디렉터리를 검색합니다.

구문

DWORD GetCurrentDirectory(
  [in]  DWORD  nBufferLength,
  [out] LPTSTR lpBuffer
);

매개 변수

[in] nBufferLength

TCHAR에서 현재 디렉터리 문자열에 대한 버퍼의 길이입니다. 버퍼 길이에는 종료 null 문자에 대한 공간이 포함되어야 합니다.

[out] lpBuffer

현재 디렉터리 문자열을 수신하는 버퍼에 대한 포인터입니다. 이 null로 끝나는 문자열은 현재 디렉터리에 대한 절대 경로를 지정합니다.

필요한 버퍼 크기를 확인하려면 이 매개 변수를 NULL 로 설정하고 nBufferLength 매개 변수를 0으로 설정합니다.

반환 값

함수가 성공하면 반환 값은 종료 null 문자를 포함하지 않고 버퍼에 기록되는 문자 수를 지정합니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

lpBuffer가 가리키는 버퍼가 충분히 크지 않으면 반환 값은 null 종료 문자를 포함하여 버퍼의 필요한 크기를 문자 단위로 지정합니다.

설명

각 프로세스에는 두 부분으로 구성된 단일 현재 디렉터리가 있습니다.

  • 드라이브 문자 뒤에 콜론 또는 서버 이름 뒤에 공유 이름(\\servername\sharename)이 잇는 디스크 지정자
  • 디스크 지정자의 디렉터리
현재 디렉터리를 설정하려면 SetCurrentDirectory 함수를 사용합니다.

다중 스레드 애플리케이션 및 공유 라이브러리 코드는
GetCurrentDirectory 함수이며 상대 경로 이름을 사용하지 않아야 합니다. SetCurrentDirectory 함수에 의해 작성된 현재 디렉터리 상태는 각 프로세스에서 전역 변수로 저장되므로 다중 스레드 애플리케이션은 이 값을 읽거나 설정할 수도 있는 다른 스레드의 데이터 손상 없이는 이 값을 안정적으로 사용할 수 없습니다. 이 제한은 SetCurrentDirectoryGetFullPathName 함수에도 적용됩니다. 애플리케이션이 단일 스레드에서 실행되도록 보장되는 경우는 예외입니다. 예를 들어 추가 스레드를 만들기 전에 기본 스레드의 명령줄 인수 문자열에서 파일 이름을 구문 분석합니다. 다중 스레드 애플리케이션 또는 공유 라이브러리 코드에서 상대 경로 이름을 사용하면 예측할 수 없는 결과를 얻을 수 있으며 지원되지 않습니다.

Windows 8 및 Windows Server 2012에서 이 함수는 다음 기술을 통해 지원됩니다.

기술 지원됨
SMB(서버 메시지 블록) 3.0 프로토콜 Yes
SMB 3.0 TFO(투명 장애 조치(failover)) Yes
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0 Yes
CsvFS(클러스터 공유 볼륨 파일 시스템) Yes
ReFS(Resilient File System)
 

예제

예를 들어 현재 디렉터리 변경을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

CreateDirectory

디렉터리 관리 함수

GetSystemDirectory

GetWindowsDirectory

RemoveDirectory

SetCurrentDirectory