다음을 통해 공유


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 드라이브입니다. 또한 애플리케이션은 CreateFiledwShareMode 매개 변수에 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 포함)

추가 정보

CloseHandle

CreateFile

DeviceIoControl

FSCTL_DISMOUNT_VOLUME

FSCTL_UNLOCK_VOLUME

볼륨 관리 제어 코드