IOCTL_STORAGE_CHECK_VERIFY IOCTL (ntddstor.h)
判斷媒體是否已在卸除式媒體裝置上變更,呼叫端已開啟以進行讀取或寫入存取。 如果不需要對裝置進行讀取或寫入存取,呼叫端可以使用 FILE_READ_ATTRIBUTES 開啟裝置並改為發出IOCTL_STORAGE_CHECK_VERIFY2 要求,以改善效能。
如需詳細資訊,請參閱 支援卸載式媒體。
主要程序代碼
輸入緩衝區
沒有。
輸入緩衝區長度
沒有。
輸出緩衝區
或者,針對磁碟和 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 中),則必須:
- 將 [資訊] 設定為零。
- 將 [狀態] 設定為 [STATUS_VERIFY_REQUIRED]。
- 在 DeviceObject 中設定DO_VERIFY_VOLUME旗標。
- 使用輸入 IRP 呼叫 IoCompleteRequest。
- 將 [狀態] 設定為 [STATUS_IO_DEVICE_ERROR]。
- 將 [資訊] 設定為零。
- 使用 IRP 呼叫 IoCompleteRequest。
對於磁帶驅動程式,[資訊] 字段會設定為零,而 [狀態] 字段會設定為 [STATUS_SUCCESS],或可能設定為 [STATUS_VERIFY_REQUIRED]。
要求
要求 | 價值 |
---|---|
標頭 | ntddstor.h (include Ntddstor.h) |