IOCTL_STORAGE_BREAK_RESERVATION IOCTL (ntddstor.h)
中斷磁碟保留。 在多啟動器 (「叢集」) 系統中,單一計算機可以保留磁碟資源,讓其他計算機無法存取磁碟。 如果計算機沒有或無法及時釋放資源,則需要強制移除磁碟保留的方法。
強制系統釋放保留磁碟資源的其中一種方法是重設總線。 事實上,對於由 SCSI 埠驅動程式管理總線適配卡的存儲設備,IOCTL_STORAGE_BREAK_RESERVATION要求相當於 IOCTL_STORAGE_RESET_BUS,這隻會重設總線,釋放其所有保留的資源。
對於總線適配卡由 STOR 埠驅動程式管理的記憶體裝置,此 I/O 控制程式代碼提供更好的磁碟保留中斷技術。 這項技術稱為「階層重設」。收到IOCTL_STORAGE_BREAK_RESERVATION要求時,STOR 埠驅動程式會先重設邏輯單元本身,嘗試移除邏輯單元上的保留。 如果失敗,STOR 埠驅動程式會嘗試重設邏輯單元父系的目標裝置。 只有在重設目標裝置失敗時,埠驅動程式才會重設總線。
重設總線會清除所有裝置保留和傳送速率設定,然後必須重新交涉。 由於這是耗時的作業,因此IOCTL_STORAGE_BREAK_RESERVATION一律優先於簡單的總線重設。
呼叫端只需要讀取許可權才能發出總線重設。
暫止 SRB 的 SrbStatus 旗標 會設定為 SRB_STATUS_BUS_RESET。
主要程序代碼
輸入緩衝區
Irp-AssociatedIrp.SystemBuffer> 上的緩衝區包含可識別要重設總線的STORAGE_BREAK_RESERVATION_REQUEST結構。
輸入緩衝區長度
STORAGE_BREAK_RESERVATION_REQUEST 結構的長度。
輸出緩衝區
無。
輸出緩衝區長度
無。
狀態區塊
[ 資訊] 欄位設定為零。 [ 狀態 ] 欄位會設定為 [STATUS_SUCCESS],或可能設定為 [STATUS_INSUFFICIENT_RESOURCES]、[STATUS_NOT_IMPLEMENTED] 或 [STATUS_INVALID_DEVICE_REQUEST]。
規格需求
需求 | 值 |
---|---|
標頭 | ntddstor.h (包含 Ntddstor.h) |