다음을 통해 공유


IOCTL_STORAGE_CHECK_VERIFY IOCTL(ntddstor.h)

호출자가 읽기 또는 쓰기 액세스를 위해 연 이동식 미디어 디바이스에서 미디어가 변경되었는지 여부를 확인합니다. 디바이스에 대한 읽기 또는 쓰기 권한이 필요하지 않은 경우 호출자는 FILE_READ_ATTRIBUTES 사용하여 디바이스를 열고 대신IOCTL_STORAGE_CHECK_VERIFY2 요청을 실행하여 성능을 향상시킬 수 있습니다.

자세한 내용은 이동식 미디어 지원을 참조하세요.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

없음

입력 버퍼 길이

없음

출력 버퍼

필요에 따라 디스크 및 CD-ROM 디바이스의 경우 Irp-AssociatedIrp.SystemBuffer>는 버퍼를 가리키며 미디어 변경 횟수를 수신합니다. Parameters.DeviceIoControl.OutputBufferLength가 0이 아니고 반환 값이 STATUS_SUCCESS 경우에만 드라이버가 이 버퍼를 채웁니다. 미디어 변경 횟수는 드라이버가 시작된 이후 미디어가 변경된 횟수를 나타내는 ULONG입니다.

그렇지 않으면 이 요청에는 출력이 없습니다.

출력 버퍼 길이

필요에 따라 디스크 및 CD-ROM 디바이스의 경우 IRP의 I/O 스택 위치에 있는 Parameters.DeviceIoControl.OutputBufferLength는 = sizeof(ULONG)여야 >하는 버퍼의 크기를 바이트 단위로 나타냅니다. 선택적 버퍼를 지정하지 않으면 이 필드는 0입니다.

그렇지 않으면 이 요청에는 입력이 없습니다.

상태 블록

디스크 또는 CD-ROM 드라이버에 미디어가 변경되었다는 표시가 없는 경우 드라이버는 상태 필드를 STATUS_SUCCESS 설정합니다. 또한 선택적 미디어 변경 버퍼를 지정한 경우 드라이버는 Irp-AssociatedIrp.SystemBuffer>에서 버퍼의 미디어 변경 횟수를 반환하고 정보 필드를 sizeof(ULONG)로 설정합니다. 선택적 미디어 변경 버퍼를 지정하지 않은 경우 드라이버는 정보를 0으로 설정합니다.

드라이버가 미디어가 변경되고 볼륨이 탑재된 것을 감지하는 경우(VPB에 설정된 VPB_MOUNTED) 다음을 수행해야 합니다.

  1. 정보를 0으로 설정합니다.
  2. 상태를 STATUS_VERIFY_REQUIRED 설정합니다.
  3. DeviceObject에서 DO_VERIFY_VOLUME 플래그를 설정합니다.
  4. 입력 IRP 를 사용하여 IoCompleteRequest 를 호출합니다.
드라이버가 미디어가 변경되었음을 감지하지만 볼륨이 탑재되지 않은 경우 드라이버는 DO_VERIFY_VOLUME 비트를 설정하지 않아야 합니다. 대신 다음을 수행해야 합니다.
  1. 상태를 STATUS_IO_DEVICE_ERROR 설정합니다.
  2. 정보를 0으로 설정합니다.
  3. IRP를 사용하여 IoCompleteRequest 를 호출합니다.
드라이버가 STATUS_BUFFER_TOO_SMALL, STATUS_INSUFFICIENT_RESOURCES 또는 디바이스 오류와 같은 오류를 감지하면 정보를 0으로 설정하고 상태 필드에 적절한 오류 값을 설정합니다.

테이프 드라이버의 경우 정보 필드가 0으로 설정되고 상태 필드가 STATUS_SUCCESS 설정되거나 STATUS_VERIFY_REQUIRED 수 있습니다.

요구 사항

요구 사항
헤더 ntddstor.h(Ntddstor.h 포함)

추가 정보

IOCTL_STORAGE_CHECK_VERIFY2