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 裝置,在 IRP 的 I/O 堆棧位置中 ,Parameters.DeviceIoControl.OutputBufferLength 會指出緩衝區的大小,以位元組為單位,這必須是 >= sizeof (ULONG) 。 如果未指定選擇性緩衝區,則此欄位為零。
否則,此要求沒有輸入。
狀態區塊
如果磁碟或 CD-ROM 驅動程式沒有指出媒體已變更,驅動程式會將 [ 狀態 ] 欄位設定為STATUS_SUCCESS。 此外,如果指定了選擇性媒體變更緩衝區,驅動程式會在 Irp-AssociatedIrp.SystemBuffer> 的緩衝區中傳回媒體變更計數,並將 Information 字段設定為 sizeof (ULONG) 。 如果未指定選擇性媒體變更緩衝區,驅動程式會將 [資訊 ] 設定為零。
如果驅動程式偵測到媒體已變更,且磁碟區掛接 (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 (包含 Ntddstor.h) |