볼륨 이름 지정
레이블은 일반적으로 최종 사용자가 쉽게 인식할 수 있도록 볼륨에 할당된 사용자 식별 이름입니다. 볼륨에는 레이블, 드라이브 문자 또는 둘 모두 있거나 둘 모두 없을 수 있습니다. 볼륨에 대한 레이블을 설정하려면 SetVolumeLabel 함수를 사용합니다.
드라이브 문자와 레이블만 사용하여 특정 볼륨을 식별하기 어려운 몇 가지 요인이 있습니다. 하나는 볼륨에 드라이브 문자 또는 레이블이 필요하지 않다는 것입니다. 또 다른 하나는 두 개의 서로 다른 볼륨에 동일한 레이블이 있을 수 있으므로 드라이브 문자를 빼면 구별할 수 없다는 것입니다. 세 번째 요인은 컴퓨터에 볼륨이 추가되고 제거될 때 할당되는 드라이브 문자가 변경될 수 있다는 것입니다.
이 문제를 해결하기 위해 운영 체제에서는 볼륨 GUID 경로를 사용하여 볼륨을 식별합니다. 다음과 같은 형식의 문자열이 사용됩니다.
"\\?\Volume{GUID}\"
여기서 GUID는 해당 볼륨을 식별하는 GUID(Globally Unique Identifier)입니다.
볼륨 GUID 경로는 하나의 볼륨만 참조할 수 있기 때문에 볼륨 GUID 경로를 고유 볼륨 이름이라고도 합니다. 그러나 하나의 볼륨에 둘 이상의 볼륨 GUID 경로가 있을 수 있으므로 이 용어는 오해의 소지가 있습니다.
"\\?\" 접두사는 경로 구문 분석을 사용하지 않도록 설정하며 경로의 일부로 간주되지 않습니다. "\\?\" 접두사에 대한 자세한 내용은 파일 또는 디렉터리 이름 지정을 참조하세요.
"\\?\" 접두사가 있는 볼륨 GUID 경로를 사용할 때는 전체 경로를 지정해야 합니다.
탑재된 폴더는 한 볼륨과 다른 볼륨 간의 폴더 연결이므로 해당 폴더 경로를 사용하여 볼륨에 액세스할 수 있습니다. 예를 들어 SetVolumeMountPoint 함수를 사용하여 볼륨 "D:\"와 "C:\MountD\" 폴더를 연결하는 탑재된 폴더를 만드는 경우 두 경로 중 하나("D:\" 또는 "C:\MountD\")를 사용하여 볼륨 "D:\"에 액세스할 수 있습니다.
볼륨 탑재 지점은 볼륨에 액세스하는 데 사용할 수 있는 모든 사용자 모드 경로입니다. 볼륨 탑재 지점은 세 가지 유형이 있습니다.
- 드라이브 문자(예: "C:\").
- 볼륨 GUID 경로(예: "\\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\").
- 탑재된 폴더(예: "C:\MountD\").
볼륨 GUID 경로를 입력 매개 변수로 사용하는 모든 볼륨 및 탑재된 폴더 함수에는 후행 백슬래시가 필요합니다. 볼륨 GUID 경로를 반환하는 모든 볼륨 및 탑재된 폴더 함수는 후행 백슬래시를 제공하지만 CreateFile 함수에서는 그렇지 않습니다. CreateFile을 호출하여 볼륨을 열고 지정한 볼륨 이름에서 후행 백슬래시를 생략할 수 있습니다. CreateFile은 추가된 백슬래시를 볼륨의 루트 디렉터리로 사용하여 볼륨 GUID 경로를 처리합니다.
운영 체제는 볼륨이 처음 설치되고 볼륨의 형식이 지정될 때 볼륨 GUID 경로를 볼륨에 할당합니다. 볼륨 및 탑재된 폴더 함수는 볼륨 GUID 경로를 사용하여 볼륨에 액세스합니다. 볼륨의 볼륨 GUID 경로를 가져오려면 GetVolumeNameForVolumeMountPoint 함수를 사용합니다.
경로 길이는 심층적 디렉터리 트리가 있는 볼륨을 다른 볼륨의 디렉터리에 연결하는 탑재된 폴더를 만들 때 문제가 될 수 있습니다. 볼륨의 경로가 디렉터리의 경로에 연결되어 있기 때문입니다. 전역적으로 정의된 상수 MAX_PATH는 경로에 포함할 수 있는 최대 문자 수를 정의합니다. (MAX_PATH에 대한 자세한 내용은 파일 또는 디렉터리 이름 지정을 참조하세요.) 다음 중 하나를 수행하여 이 제약 조건을 방지할 수 있습니다.
- 볼륨 GUID 경로별로 볼륨을 참조합니다.
- \\?\ 접두사를 지원하는 파일 함수의 유니코드(W) 버전을 사용합니다.