共用方式為


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 為非零且傳回值STATUS_SUCCESS時,驅動程式才會填入此緩衝區。 媒體變更計數是 ULONG,指出驅動程式啟動後媒體已變更多少次。

否則,此要求沒有輸出。

輸出緩衝區長度

或者,針對磁碟和 CD-ROM 裝置,Parameters.DeviceIoControl.OutputBufferLength 在 IRP 的 I/O 堆棧位置中,指出緩衝區的大小,以位元組為單位,緩衝區的大小必須 >= sizeof(ULONG)。 如果未指定選擇性緩衝區,則此欄位為零。

否則,此要求沒有輸入。

狀態區塊

如果磁碟或 CD-ROM 驅動程式沒有指示媒體已變更,驅動程式會將 [狀態] 字段設定為 [STATUS_SUCCESS]。 此外,如果指定了選擇性的媒體變更緩衝區,驅動程式會在 Irp->AssociatedIrp.SystemBuffer 傳回緩衝區中的媒體變更計數,並將 [資訊] 字段設定為 sizeof(ULONG)。 如果未指定選擇性媒體變更緩衝區,驅動程式會將 Information 設定為零。

如果驅動程式偵測到媒體已變更且已掛接磁碟區(VPB_MOUNTED設定於 VPB 中),則必須:

  1. 將 [資訊] 設定為零。
  2. 將 [狀態] 設定為 [STATUS_VERIFY_REQUIRED]。
  3. DeviceObject 中設定DO_VERIFY_VOLUME旗標。
  4. 使用輸入 IRP 呼叫 IoCompleteRequest
如果驅動程式偵測到媒體已變更,但磁碟區未掛接,則驅動程式不得設定DO_VERIFY_VOLUME位。 相反地,它應該執行下列動作:
  1. 將 [狀態] 設定為 [STATUS_IO_DEVICE_ERROR]。
  2. 將 [資訊] 設定為零。
  3. 使用 IRP 呼叫 IoCompleteRequest
如果驅動程式偵測到STATUS_BUFFER_TOO_SMALL、STATUS_INSUFFICIENT_RESOURCES或裝置錯誤之類的錯誤,則會將 [資訊] 設定為零,並在 [狀態] 欄位中設定適當的錯誤值。

對於磁帶驅動程式,[資訊] 字段會設定為零,而 [狀態] 字段會設定為 [STATUS_SUCCESS],或可能設定為 [STATUS_VERIFY_REQUIRED]。

要求

要求 價值
標頭 ntddstor.h (include Ntddstor.h)

另請參閱

IOCTL_STORAGE_CHECK_VERIFY2