파일 시스템에 가능한 미디어 변경 내용 알림

이동식 미디어 디바이스 드라이버는 드라이버가 미디어에 대한 전송을 요청하는 IRP 또는 미디어에 영향을 주는 디바이스 I/O 제어 작업을 요청할 때마다 DeviceObject (IRP를 보낸 모든 드라이버 루틴에 입력)로 표시되는 디바이스에 대해 미디어가 변경되지 않도록 해야 합니다. 변경된 미디어를 검사 가장 좋은 시기는 물리적 디바이스가 항상 드라이버에 이러한 상태 변경에 대해 알 수 있는 경우 미디어 없음 상태에서 미디어 현재 상태로 전환한 직후입니다.

물리적 디바이스가 드라이버가 I/O 작업을 시작하기 전에 또는 작업 중에 미디어 상태가 변경되었을 수 있음을 나타내는 경우 드라이버는 다음을 수행해야 합니다.

  1. VPB에서 VPB_MOUNTED 플래그를 확인하여 볼륨이 탑재되었는지 확인합니다. (볼륨이 탑재되지 않은 경우 드라이버는 DO_VERIFY_VOLUME 비트를 설정해서는 안됩니다. 드라이버는 IoStatus.Status 를 STATUS_IO_DEVICE_ERROR 설정하고 , IoStatus.Information 를 0으로 설정하고, IRP를 사용하여 IoCompleteRequest 를 호출해야 합니다.)

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

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

    • 상태가 STATUS_VERIFY_REQUIRED
    • 0으로 설정된 정보
  4. 상태 필드가 STATUS_SUCCESS 설정되지 않은 IoStatus 블록으로 IRP를 완료하기 전에 드라이버는 다음 상태 값에 대해 부울 TRUE를 반환하는 IoIsErrorUserInduced를 호출해야 합니다.

    • STATUS_VERIFY_REQUIRED
    • STATUS_NO_MEDIA_IN_DEVICE
    • STATUS_WRONG_VOLUME
    • STATUS_UNRECOGNIZED_MEDIA
    • STATUS_MEDIA_WRITE_PROTECTED
    • STATUS_IO_TIMEOUT
    • STATUS_DEVICE_NOT_READY

    IoIsErrorUserInducedTRUE를 반환하는 경우 FSD가 사용자에게 대화 상자를 열 수 있도록 드라이버가 IoSetHardErrorOrVerifyDevice를 호출해야 합니다. 그러면 올바른 미디어를 제공하거나, 원래 요청을 다시 시도하거나, 요청된 작업을 취소하도록 선택할 수 있습니다.