共用方式為


回應檔案系統Check-Verify要求

檔案系統可以自行將 IRP 傳送至裝置驅動程式的分派進入點 ,以在 I/O 堆疊位置設定為下列 I/O 堆疊位置的 Parameters.DeviceIoControl.IoControlCode 要求IRP_MJ_DEVICE_CONTROL要求:

IOCTL_XXX_CHECK_VERIFY
其中 XXX 是裝置的類型,例如 DISK、TAPE 或 CDROM。

DISK 類型包含不可分割的 (磁碟片) 和可分割的可分割抽取式媒體裝置。

如果基礎設備磁碟機判斷媒體尚未變更,驅動程式應該完成 IRP,並傳回具有下列值的 IoStatus 區塊:

狀態

設定為 STATUS_SUCCESS

資訊

設定為零

此外,如果裝置類型是 DISK 或 CDROM 且呼叫端指定輸出緩衝區,驅動程式會在 Irp-AssociatedIrp.SystemBuffer 的緩衝區中傳回媒體變更計數,並將Irp-IoStatus.Information >>設定為sizeof (ULONG) 。 藉由傳回此計數,驅動程式可讓呼叫端有機會判斷媒體是否已從其觀點變更。

如果基礎設備磁碟機判斷媒體已變更,則會根據磁片區是否已掛接而採取不同的動作。 如果在 VPB) 中設定VPB_MOUNTED旗標 (掛接磁片區,驅動程式應該執行下列動作:

  1. 使用 DO_VERIFY_VOLUME 的 ORing標設定DeviceObject中的標。

  2. 將 IRP 中的 IoStatus 區塊設定為下列各項:

    • 狀態 設定為 STATUS_VERIFY_REQUIRED
    • 設定 為零的資訊
  3. 使用輸入 IRP 呼叫 IoCompleteRequest

如果未掛接磁片區,驅動程式不得設定DO_VERIFY_VOLUME位。 驅動程式應該將 IoStatus.Status 設定為 STATUS_IO_DEVICE_ERROR、將 IoStatus.Information 設定為零,並使用 IRP 呼叫 IoCompleteRequest