Menanggapi Permintaan Check-Verify dari Sistem File

Atas kebijakannya, sistem file dapat mengirim IRP ke titik masuk Pengiriman driver perangkat untuk permintaan IRP_MJ_DEVICE_CONTROL dengan Parameters.DeviceIoControl.IoControlCode di lokasi tumpukan I/O yang diatur ke berikut:

IOCTL_XXXX_CHECK_VERIFY
di mana XXX adalah jenis perangkat, seperti DISK, TAPE, atau CDROM.

Jenis DISK mencakup perangkat media yang tidak dapat dipartisi (floppy) dan dapat dilepas partisi.

Jika driver perangkat yang mendasar menentukan bahwa media tidak berubah, driver harus menyelesaikan IRP, mengembalikan blok IoStatus dengan nilai berikut:

Status

Atur ke STATUS_SUCCESS

Informasi

Atur ke nol

Selain itu, jika jenis perangkat adalah DISK atau CDROM dan pemanggil menentukan buffer output, driver mengembalikan jumlah perubahan media dalam buffer di Irp-AssociatedIrp.SystemBuffer> dan mengatur Irp-IoStatus.Information> ke sizeof(ULONG). Dengan mengembalikan jumlah ini, driver memberi penelepon kesempatan untuk menentukan apakah media telah berubah dari perspektifnya.

Jika driver perangkat yang mendasar menentukan bahwa media telah berubah, dibutuhkan tindakan yang berbeda tergantung pada apakah volume dipasang. Jika volume dipasang (bendera VPB_MOUNTED diatur di VPB), driver harus melakukan hal berikut:

  1. Atur Bendera di DeviceObject oleh Bendera ORing dengan DO_VERIFY_VOLUME.

  2. Atur blok IoStatus di IRP ke yang berikut ini:

    • Status diatur ke STATUS_VERIFY_REQUIRED
    • Informasi diatur ke nol
  3. Panggil IoCompleteRequest dengan IRP input.

Jika volume tidak dipasang, driver tidak boleh mengatur bit DO_VERIFY_VOLUME. Driver harus mengatur IoStatus.Status ke STATUS_IO_DEVICE_ERROR, mengatur IoStatus.Information ke nol, dan memanggil IoCompleteRequest dengan IRP.