파일 시스템에서 Check-Verify 요청에 응답

파일 시스템은 재량에 따라 I/O 스택 위치 집합의 Parameters.DeviceIoControl.IoControlCode사용하여 IRP_MJ_DEVICE_CONTROL 요청에 대한 디바이스 드라이버의 디스패치 진입점으로 IRP를 보낼 수 있습니다.

IOCTL_XXX_CHECK_VERIFY
여기서 XXX 는 디스크, TAPE 또는 CDROM과 같은 디바이스 유형입니다.

DISK 형식에는 분할할 수 없는(플로피) 및 분할 가능한 이동식 미디어 디바이스가 모두 포함됩니다.

기본 디바이스 드라이버가 미디어가 변경되지 않았다고 판단하는 경우 드라이버는 IRP를 완료하고 다음 값으로 IoStatus 블록을 반환해야 합니다.

상태

Set to STATUS_SUCCESS

정보

0으로 설정

또한 디바이스 유형이 DISK 또는 CDROM이고 호출자가 출력 버퍼를 지정한 경우 드라이버는 Irp-AssociatedIrp.SystemBuffer>에서 버퍼의 미디어 변경 횟수를 반환하고 Irp-IoStatus.Information>sizeof(ULONG)로 설정합니다. 이 개수를 반환하면 드라이버는 호출자에게 미디어가 관점에서 변경되었는지 여부를 확인할 수 있는 기회를 제공합니다.

기본 디바이스 드라이버가 미디어가 변경되었다고 판단하는 경우 볼륨이 탑재되었는지 여부에 따라 다른 작업을 수행합니다. 볼륨이 탑재되면(VPB_MOUNTED 플래그가 VPB에 설정됨) 드라이버는 다음을 수행해야 합니다.

  1. DO_VERIFY_VOLUME 사용하여 ORing 플래그DeviceObject의 플래그를 설정합니다.

  2. IRP의 IoStatus 블록을 다음으로 설정합니다.

    • 상태가 STATUS_VERIFY_REQUIRED
    • 0으로 설정된 정보
  3. 입력 IRP 를 사용하여 IoCompleteRequest 를 호출합니다.

볼륨이 탑재되지 않은 경우 드라이버는 DO_VERIFY_VOLUME 비트를 설정해서는 안됩니다. 드라이버는 IoStatus.Status 를 STATUS_IO_DEVICE_ERROR 설정하고 , IoStatus.Information를 0으로 설정하고, IRP를 사용하여 IoCompleteRequest 를 호출해야 합니다.