FSCTL_LOCK_VOLUME IOCTL(winioctl.h)
볼륨을 사용하고 있지 않은 경우 잠급니다. 잠긴 볼륨은 볼륨을 잠그는 파일 개체(*hDevice)에 대한 핸들을 통해서만 액세스할 수 있습니다. 자세한 내용은 주의 섹션을 참조하세요.
이 작업을 수행하려면 다음 매개 변수를 사용하여 DeviceIoControl 함수를 호출합니다.
BOOL DeviceIoControl(
(HANDLE) hVolume, // handle to a volume
(DWORD) FSCTL_LOCK_VOLUME, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
NULL // OVERLAPPED structure
);
요청이 성공하면 Irp-IoStatus.Status>가 STATUS_SUCCESS 설정됩니다.
그렇지 않으면 NTSTATUS 코드로 적절한 오류 조건에 대한 상태입니다.
자세한 내용은 NTSTATUS 값을 참조하세요.
설명
DeviceIoControl에 전달된 hDevice 핸들은 직접 액세스하기 위해 열린 볼륨에 대한 핸들이어야 합니다. 이 핸들을 검색하려면 lpFileName 매개 변수가 다음 양식의 문자열로 설정된 CreateFile을 호출합니다.
\.\X:
여기서 X 는 하드 드라이브 파티션 문자, 플로피 디스크 드라이브 또는 CD-ROM 드라이브입니다. 또한 애플리케이션은 CreateFile의 dwShareMode 매개 변수에 FILE_SHARE_READ 및 FILE_SHARE_WRITE 플래그를 지정해야 합니다.
지정된 볼륨이 시스템 볼륨이거나 페이지 파일을 포함하는 경우 작업이 실패합니다.
볼륨에 열려 있는 파일이 있으면 이 작업이 실패합니다. 반대로 이 작업의 성공은 열려 있는 파일이 없음을 나타냅니다.
이 작업은 디스크 유틸리티 및 백업 프로그램과 같이 일정 기간 동안 볼륨에 대한 단독 액세스가 필요한 애플리케이션에 유용합니다.
잠긴 볼륨은 다음 중 하나가 발생할 때까지 잠긴 상태로 유지됩니다.
- 애플리케이션은 FSCTL_UNLOCK_VOLUME 제어 코드를 사용하여 볼륨의 잠금을 해제합니다.
- 핸들은 CloseHandle을 통해 직접 또는 프로세스가 종료되면 간접적으로 닫힙니다.
NTFS 파일 시스템은 잠긴 볼륨을 분리된 볼륨으로 처리합니다. FSCTL_DISMOUNT_VOLUME 제어 코드는 비슷하게 작동하지만 분리하기 전에 열린 파일에 대해 검사 않습니다. 잠금 작업이 성공하지 않으면 언제든지 모든 프로세스에서 분리된 볼륨을 다시 탑재할 수 있습니다. 예를 들어 볼륨 백업을 수행하는 데 이상적인 상태는 아닙니다.
Windows 8 및 Windows Server 2012 이 코드는 다음 기술에서 지원됩니다.
기술 | 지원됨 |
---|---|
SMB(서버 메시지 블록) 3.0 프로토콜 | No |
SMB 3.0 TFO(투명 장애 조치(failover)) | No |
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0 | No |
CsvFS(클러스터 공유 볼륨 파일 시스템) | 주석 참조 |
CsvFs 잠금 볼륨에서 PNP 알림은 잠금 요청이 실행된 노드에서만 전송됩니다. 잠금은 NTFS 위에 있는 CsvFs 필터에 열려 있는 파일이 표시되지 않는 경우에만 성공합니다.
CSV 볼륨에 대한 잠금을 가져온 후 볼륨에 대한 핸들을 열기 전에 해당 볼륨을 잠그는 데 사용되는 핸들을 닫아야 합니다. FSCTL_UNLOCK_VOLUME 사용하여 볼륨을 잠금 해제하는 것으로 충분하지 않습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
머리글 | winioctl.h(Windows.h 포함) |