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