GetVolumeInformationA 함수(fileapi.h)

지정된 루트 디렉터리와 연결된 파일 시스템 및 볼륨 관련 정보를 검색합니다.

이 정보를 검색할 때 핸들을 지정하려면 GetVolumeInformationByHandleW 함수를 사용합니다.

파일 또는 디렉터리의 현재 압축 상태를 검색하려면 FSCTL_GET_COMPRESSION 사용합니다.

구문

BOOL GetVolumeInformationA(
  [in, optional]  LPCSTR  lpRootPathName,
  [out, optional] LPSTR   lpVolumeNameBuffer,
  [in]            DWORD   nVolumeNameSize,
  [out, optional] LPDWORD lpVolumeSerialNumber,
  [out, optional] LPDWORD lpMaximumComponentLength,
  [out, optional] LPDWORD lpFileSystemFlags,
  [out, optional] LPSTR   lpFileSystemNameBuffer,
  [in]            DWORD   nFileSystemNameSize
);

매개 변수

[in, optional] lpRootPathName

설명할 볼륨의 루트 디렉터리가 포함된 문자열에 대한 포인터입니다.

이 매개 변수가 NULL이면 현재 디렉터리의 루트가 사용됩니다. 후행 백슬래시가 필요합니다. 예를 들어 \\MyServer\MyShare를 "\\MyServer\MyShare\"로 지정하거나 C 드라이브를 "C:\"로 지정합니다.

[out, optional] lpVolumeNameBuffer

지정된 볼륨의 이름을 받는 버퍼에 대한 포인터입니다. 버퍼 크기는 nVolumeNameSize 매개 변수로 지정됩니다.

[in] nVolumeNameSize

TCHAR의 볼륨 이름 버퍼 길이입니다. 최대 버퍼 크기는 MAX_PATHs+1입니다.

볼륨 이름 버퍼가 제공되지 않으면 이 매개 변수는 무시됩니다.

[out, optional] lpVolumeSerialNumber

볼륨 일련 번호를 받는 변수에 대한 포인터입니다.

일련 번호가 필요하지 않은 경우 이 매개 변수는 NULL 일 수 있습니다.

이 함수는 하드 디스크의 형식을 지정할 때 운영 체제에서 할당하는 볼륨 일련 번호를 반환합니다. 제조업체에서 할당하는 하드 디스크의 일련 번호를 프로그래밍 방식으로 가져오려면 WMI(Windows Management Instrumentation) Win32_PhysicalMedia 속성 SerialNumber를 사용합니다.

[out, optional] lpMaximumComponentLength

지정된 파일 시스템에서 지원하는 파일 이름 구성 요소의 최대 길이( TCHAR)를 받는 변수에 대한 포인터입니다.

파일 이름 구성 요소는 백 슬래시 사이의 파일 이름 부분입니다.

*lpMaximumComponentLength 가 가리키는 변수에 저장된 값은 지정된 파일 시스템에서 긴 이름을 지원함을 나타내는 데 사용됩니다. 예를 들어 긴 이름을 지원하는 FAT 파일 시스템의 경우 함수는 이전 8.3 표시기가 아닌 값 255를 저장합니다. NTFS 파일 시스템을 사용하는 시스템에서도 긴 이름을 지원합니다.

[out, optional] lpFileSystemFlags

지정된 파일 시스템과 연결된 플래그를 수신하는 변수에 대한 포인터입니다.

이 매개 변수는 다음 플래그 중 하나 이상일 수 있습니다. 그러나 FILE_FILE_COMPRESSIONFILE_VOL_IS_COMPRESSED 상호 배타적입니다.

의미
FILE_CASE_SENSITIVE_SEARCH
0x00000001
지정된 볼륨은 대/소문자를 구분하는 파일 이름을 지원합니다.
FILE_CASE_PRESERVED_NAMES
0x00000002
지정된 볼륨은 디스크에 이름을 배치할 때 파일 이름의 보존된 대/소문자를 지원합니다.
FILE_UNICODE_ON_DISK
0x00000004
지정된 볼륨은 디스크에 표시될 때 파일 이름에서 유니코드를 지원합니다.
FILE_PERSISTENT_ACLS
0x00000008
지정된 볼륨은 ACL(액세스 제어 목록)을 유지하고 적용합니다. 예를 들어 NTFS 파일 시스템은 ACL을 유지 및 적용하며 FAT 파일 시스템은 유지하지 않습니다.
FILE_FILE_COMPRESSION
0x00000010
지정된 볼륨은 파일 기반 압축을 지원합니다.
FILE_VOLUME_QUOTAS
0x00000020
지정된 볼륨은 디스크 할당량을 지원합니다.
FILE_SUPPORTS_SPARSE_FILES
0x00000040
지정된 볼륨은 스파스 파일을 지원합니다.
FILE_SUPPORTS_REPARSE_POINTS
0x00000080
지정된 볼륨은 재분석 지점을 지원합니다.

심판: ReFS는 재분석 지점을 지원하지만 인덱싱하지 않으므로 FindFirstVolumeMountPointFindNextVolumeMountPoint 가 예상대로 작동하지 않습니다.
FILE_SUPPORTS_REMOTE_STORAGE
0x00000100
파일 시스템은 원격 스토리지를 지원합니다.
FILE_RETURNS_CLEANUP_RESULT_INFO
0x00000200
성공적인 정리 작업에서 파일 시스템은 파일 삭제와 같이 정리 중에 수행된 추가 작업을 설명하는 정보를 반환합니다. 파일 시스템 필터는 정리 후 콜백에서 이 정보를 검사할 수 있습니다.
FILE_SUPPORTS_POSIX_UNLINK_RENAME
0x00000400
파일 시스템은 POSIX 스타일 삭제 및 이름 바꾸기 작업을 지원합니다.
FILE_VOLUME_IS_COMPRESSED
0x00008000
지정된 볼륨은 압축된 볼륨(예: DoubleSpace 볼륨)입니다.
FILE_SUPPORTS_OBJECT_IDS
0x00010000
지정된 볼륨은 개체 식별자를 지원합니다.
FILE_SUPPORTS_ENCRYPTION
0x00020000
지정된 볼륨은 EFS(암호화된 파일 시스템)를 지원합니다. 자세한 내용은 파일 암호화를 참조하세요.
FILE_NAMED_STREAMS
0x00040000
지정된 볼륨은 명명된 스트림을 지원합니다.
FILE_READ_ONLY_VOLUME
0x00080000
지정된 볼륨이 읽기 전용입니다.
FILE_SEQUENTIAL_WRITE_ONCE
0x00100000
지정된 볼륨은 단일 순차 쓰기를 지원합니다.
FILE_SUPPORTS_TRANSACTIONS
0x00200000
지정된 볼륨은 트랜잭션을 지원합니다. 자세한 내용은 KTM 정보를 참조하세요.
FILE_SUPPORTS_HARD_LINKS
0x00400000
지정된 볼륨은 하드 링크를 지원합니다. 자세한 내용은 하드 링크 및 접합을 참조하세요.

Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 값은 Windows Server 2008 R2 및 Windows 7까지 지원되지 않습니다.
FILE_SUPPORTS_EXTENDED_ATTRIBUTES
0x00800000
지정된 볼륨은 확장 특성을 지원합니다. 확장 특성은 애플리케이션이 파일과 연결할 수 있고 파일 데이터의 일부가 아닌 애플리케이션별 메타데이터의 일부입니다.

Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 값은 Windows Server 2008 R2 및 Windows 7까지 지원되지 않습니다.
FILE_SUPPORTS_OPEN_BY_FILE_ID
0x01000000
파일 시스템은 FileID에서 열기를 지원합니다. 자세한 내용은 FILE_ID_BOTH_DIR_INFO 참조하세요.

Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 값은 Windows Server 2008 R2 및 Windows 7까지 지원되지 않습니다.
FILE_SUPPORTS_USN_JOURNAL
0x02000000
지정된 볼륨은 USN(업데이트 시퀀스 번호) 저널을 지원합니다. 자세한 내용은 저널 레코드 변경을 참조하세요.

Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 값은 Windows Server 2008 R2 및 Windows 7까지 지원되지 않습니다.
FILE_SUPPORTS_INTEGRITY_STREAMS
0x04000000
파일 시스템은 무결성 스트림을 지원합니다.
FILE_SUPPORTS_BLOCK_REFCOUNTING
0x08000000
지정된 볼륨은 동일한 볼륨의 파일 간에 논리 클러스터 공유를 지원합니다. 파일 시스템은 쓰기를 공유 클러스터에 다시 할당합니다. FSCTL_DUPLICATE_EXTENTS_TO_FILE 지원되는 작업임을 나타냅니다.
FILE_SUPPORTS_SPARSE_VDL
0x10000000
파일 시스템은 파일의 각 클러스터에 유효한 데이터(명시적 파일 쓰기 또는 자동 0)가 포함되어 있는지 또는 잘못된 데이터(아직 기록되지 않았거나 0으로 작성되지 않은 경우)를 추적합니다. 스파스 유효한 데이터 길이(VDL)를 사용하는 파일 시스템은 유효한 데이터 길이를 저장하지 않으며 파일 내에서 유효한 데이터를 연속할 필요가 없습니다.
FILE_DAX_VOLUME
0x20000000
지정된 볼륨은 DAX(직접 액세스) 볼륨입니다.

참고:
이 플래그는 Windows 10 버전 1607에서 도입되었습니다.
FILE_SUPPORTS_GHOSTING
0x40000000
파일 시스템은 고스팅을 지원합니다.

[out, optional] lpFileSystemNameBuffer

파일 시스템의 이름(예: FAT 파일 시스템 또는 NTFS 파일 시스템)을 수신하는 버퍼에 대한 포인터입니다. 버퍼 크기는 nFileSystemNameSize 매개 변수로 지정됩니다.

[in] nFileSystemNameSize

TCHAR의 파일 시스템 이름 버퍼 길이입니다. 최대 버퍼 크기는 MAX_PATH+1입니다.

파일 시스템 이름 버퍼가 제공되지 않으면 이 매개 변수는 무시됩니다.

반환 값

요청된 모든 정보를 검색하면 반환 값은 0이 아닌 값입니다.

요청된 정보가 모두 검색되지 않으면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

플로피 디스크가 없는 플로피 드라이브 또는 컴팩트 디스크가 없는 CD-ROM 드라이브에 대한 정보를 얻으려는 경우 시스템은 플로피 디스크 또는 컴팩트 디스크를 각각 삽입할 수 있는 메시지 상자를 표시합니다. 시스템에서 이 메시지 상자를 표시하지 않도록 하려면 SEM_FAILCRITICALERRORS있는 SetErrorMode 함수를 호출합니다.

FILE_VOL_IS_COMPRESSED 플래그는 볼륨 기반 압축의 유일한 지표입니다. 파일 시스템 이름은 압축을 나타내기 위해 변경되지 않습니다. 예를 들어 이 플래그는 DoubleSpace 볼륨에 설정된 상태로 반환됩니다. 압축이 볼륨 기반이면 전체 볼륨이 압축되거나 압축되지 않습니다.

FILE_FILE_COMPRESSION 플래그는 파일 시스템에서 파일 기반 압축을 지원하는지 여부를 나타냅니다. 압축이 파일 기반이면 개별 파일을 압축하거나 압축할 수 없습니다.

FILE_FILE_COMPRESSIONFILE_VOL_IS_COMPRESSED 플래그는 상호 배타적입니다. 두 비트 모두 집합을 반환할 수 없습니다.

lpMaximumComponentLength에 저장된 최대 구성 요소 길이 값은 볼륨이 일반보다 긴 FAT 파일 시스템(또는 다른 파일 시스템) 파일 이름을 지원하는 유일한 지표입니다. 긴 파일 이름에 대한 지원을 나타내기 위해 파일 시스템 이름이 변경되지 않습니다.

GetCompressedFileSize 함수는 파일의 압축된 크기를 가져옵니다. GetFileAttributes 함수는 개별 파일이 압축되었는지 여부를 확인할 수 있습니다.

경로가 바로 가기 링크를 가리키는 경우 함수는 대상의 볼륨 정보를 반환합니다.

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

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

SMB는 볼륨 관리 기능을 지원하지 않습니다.

거래된 작업

볼륨이 파일 시스템 트랜잭션을 지원하면 함수는 lpFileSystemFlags에서 FILE_SUPPORTS_TRANSACTIONS를 반환합니다.

참고

fileapi.h 헤더는 GETVolumeInformation을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

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

참고 항목

KTM 정보

파일 암호화

GetCompressedFileSize

GetFileAttributes

GetVolumeInformationByHandleW

SetErrorMode

SetVolumeLabel

볼륨 관리 함수