IOCTL_VOLUME_READ_PLEX IOCTL (ntddvol.h)
在磁碟區的特定 plex 上執行讀取。 由於所有 plexes 都相同,因此磁碟區管理員可以在一般讀取作業期間,從任何磁碟區的 plexes 擷取數據。 磁碟區管理員會將讀取分散在磁碟區的叢集之間,以平衡實體媒體上的 I/O 負載,並將讀取效能最大化。
不過,如果應用程式或內核模式元件必須從特定 plex 讀取數據,而不是讓磁碟區管理員挑選一個,則可以使用此 IOCTL 來執行此動作。
主要程序代碼
輸入緩衝區
呼叫端會在 Irp->AssociatedIrp.SystemBuffer的緩衝區開頭插入包含邏輯位移的 VOLUME_READ_PLEX_INPUT 結構。
輸入緩衝區長度
參數.DeviceIoControl.InputBufferLength IRP 的 I/O 堆棧位置,表示輸入緩衝區的大小,其必須大於或等於 sizeof(VOLUME_READ_PLEX_INPUT) 的值。輸出緩衝區
如同 IRP_MJ_READ,此 IOCTL 會將讀取資料儲存在 Irp->MdlAddress 欄位中,以記憶體描述元清單的形式傳遞的記憶體緩衝區中。
輸出緩衝區長度
緩衝區的長度。
狀態區塊
如果作業成功,磁碟區管理員會將 [狀態] 欄位設定為 [STATUS_SUCCESS]。
Irp->AssociatedIrp.SystemBuffer 的VOLUME_READ_PLEX_INPUT結構具有必須在 512 位元組界限上對齊的 Length 成員。 如果 長度 沒有適當的對齊方式,作業會失敗,而磁碟區管理員會將 [狀態] 字段設定為 [VKE_EINVAL]。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows XP 開始提供。 |
標頭 | ntddvol.h (include Ntddvol.h) |