Share via


Risposta alle richieste di Check-Verify dal file system

A sua discrezione, il file system può inviare un'IRP al punto di ingresso Dispatch del driver del dispositivo per le richieste di IRP_MJ_DEVICE_CONTROL con Parameters.DeviceIoControl.IoControlCode nel percorso dello stack I/O impostato sul seguente:

IOCTL_XXX_CHECK_VERIFY
dove XXX è il tipo di dispositivo, ad esempio DISK, TAPE o CDROM.

Il tipo DISK include sia dispositivi rimovibili non partizionabili (floppy) che partizionabili.

Se il driver del dispositivo sottostante determina che il supporto non è stato modificato, il driver deve completare l'IRP, restituendo il blocco IoStatus con i valori seguenti:

Status

Impostare su STATUS_SUCCESS

Informazioni

Impostare su zero

Inoltre, se il tipo di dispositivo è DISK o CDROM e il chiamante ha specificato un buffer di output, il driver restituisce il conteggio delle modifiche multimediali nel buffer in Irp-AssociatedIrp.SystemBuffer> e imposta Irp-IoStatus.Information> su sizeof(ULONG). Restituendo questo conteggio, il conducente offre al chiamante l'opportunità di determinare se il supporto è cambiato dal suo punto di vista.

Se il driver del dispositivo sottostante determina che il supporto è cambiato, viene eseguita un'azione diversa a seconda che il volume sia montato. Se il volume viene montato (il flag di VPB_MOUNTED è impostato nel VPB), il driver deve eseguire le operazioni seguenti:

  1. Impostare i flag in DeviceObject by ORing Flags con DO_VERIFY_VOLUME.

  2. Impostare il blocco IoStatus nell'IRP su quanto segue:

    • Stato impostato su STATUS_VERIFY_REQUIRED
    • Informazioni impostate su zero
  3. Chiamare IoCompleteRequest con l'IRP di input.

Se il volume non è montato, il driver non deve impostare il bit di DO_VERIFY_VOLUME. Il driver deve impostare IoStatus.Status su STATUS_IO_DEVICE_ERROR, impostare IoStatus.Information su zero e chiamare IoCompleteRequest con l'IRP .