IOCTL_STORAGE_PERSISTENT_RESERVE_OUT IOCTL (ntddstor.h)
泛型儲存類別驅動程式 (classpnp.sys) 會公開 I/O 控件 (IOCTL) 介面,以發出 Persistent Reserve Out 命令。 收到永續性保留輸出命令時儲存裝置的行為,請參閱 SCSI 主要命令 - 2 (SPC-2) 規格。 IOCTL 介面要求呼叫端具有持續性保留輸出命令實體裝置的讀取/寫入存取權。 使用者模式應用程式、服務和內核模式驅動程式可以使用此 IOCTL 來控制持續性保留。 如果從驅動程式呼叫,則必須從在 IRQL 執行 < DISPATCH_LEVEL 的線程呼叫此 IOCTL。 此 IOCTL 是以 FILE_READ_ACCESS 和 FILE_WRITE_ACCESS 定義,要求裝置句柄同時具有讀取和寫入許可權,才能發出 Persistent Reserve Out 命令。
主要程序代碼
輸入緩衝區
Irp->AssociatedIrp.SystemBuffer 的緩衝區包含 PERSISTENT_RESERVE_COMMAND 結構。 您必須從非分頁集區配置緩衝區,而且必須針對目標裝置和配接器正確對齊。
PR_OUT。ServiceAction 可以是下列其中一項:
- RESERVATION_ACTION_REGISTER
- RESERVATION_ACTION_RESERVE
- RESERVATION_ACTION_RELEASE
- RESERVATION_ACTION_CLEAR
- RESERVATION_ACTION_PREEMPT
- RESERVATION_ACTION_PREEMPT_ABORT
- RESERVATION_ACTION_REGISTER_IGNORE_EXISTING
PR_OUT。範圍可以是下列其中一項:
- RESERVATION_SCOPE_LU
- RESERVATION_SCOPE_ELEMENT
PR_OUT。類型可以是下列其中一項:
- RESERVATION_TYPE_WRITE_EXCLUSIVE
- RESERVATION_TYPE_EXCLUSIVE
- RESERVATION_TYPE_WRITE_EXCLUSIVE_REGISTRANTS
- RESERVATION_TYPE_EXCLUSIVE_REGISTRANTS
PR_OUT。ParameterList 用來保存 PRO_PARAMETER_LIST 結構。 此結構是必要的,而且必須與 PERSISTENT_RESERVE_COMMAND 結構的其餘部分連續。
輸入緩衝區長度
PERSISTENT_RESERVE_COMMAND 結構的長度。
輸出緩衝區
沒有。
輸出緩衝區長度
沒有。
狀態區塊
[資訊 ] 字段 設定為零。
[狀態 ] 字段 設定為下列其中一個值。
價值 | 意義 |
---|---|
STATUS_DEVICE_BUSY (ERROR_BUSY) | 命令因為保留衝突而失敗(如需詳細資訊,請參閱 SCSI 主要命令 - 2 (SPC-2) 規格。 |
STATUS_INFO_LENGTH_MISMATCH | IOCTL 的輸入緩衝區長度小於 sizeof(PERSISTENT_RESERVE_COMMAND),或 PERSISTENT_RESERVE_COMMAND 數據結構中指定的大小小於 sizeof(PERSISTENT_RESERVE_COMMAND)。 |
STATUS_INVALID_DEVICE_REQUEST (ERROR_INVALID_FUNCTION) | 記憶體驅動程式不支援 I/O 控制程式代碼 (IOCTL_STORAGE_PERSISTENT_RESERVE_OUT)。 |
STATUS_INVALID_PARAMETER (ERROR_INVALID_PARAMETER) | 輸入緩衝區結構的大小不正確或填入。 |
STATUS_INVALID_USER_BUFFER (ERROR_INVALID_USER_BUFFER) | 輸入緩衝區未正確對齊裝置或配接器。 只有在驅動程式將IOCTL傳送至記憶體堆疊時,才能傳回此狀態。 當使用者模式應用程式透過 DeviceIoControl API 傳送 IOCTL 時,不會傳回此狀態,因為 I/O 管理員會自動對齊緩衝區。 |
STATUS_IO_DEVICE_ERROR (ERROR_IO_DEVICE) | 裝置不支援 Persistent Reserve Out 命令。 |
STATUS_SUCCESS | 作業成功。 |
要求
要求 | 價值 |
---|---|
標頭 | ntddstor.h (include Ntddstor.h) |