IOCTL_VOLUME_LOGICAL_TO_PHYSICAL IOCTL (ntddvol.h)
傳回指定磁碟區邏輯位移的實體位移和實體磁碟編號。
例如,具有兩個 plex 之鏡像磁碟區內的邏輯磁碟區位移會對應至兩個實體位移,其中一個位在參與鏡像的兩個磁盤中。 為了回應此 IOCTL,磁碟區管理員會傳回邏輯磁碟區位移的兩個實體位移和兩個實體磁碟編號。
磁碟區管理員針對所有類型的基本和動態磁碟區支援此 IOCTL。
主要程序代碼
輸入緩衝區
呼叫端會在 Irp-AssociatedIrp.SystemBuffer> 的緩衝區開頭插入包含邏輯位移的VOLUME_LOGICAL_OFFSET結構。
輸入緩衝區長度
IRP I/O 堆疊位置中的 Parameters.DeviceIoControl.InputBufferLength 表示輸入緩衝區的大小,以位元組為單位,其必須大於或等於 sizeof (VOLUME_LOGICAL_OFFSET) 的值。輸出緩衝區
輸出緩衝區大小必須夠大,才能保存結構 VOLUME_PHYSICAL_OFFSETS,其中包含類型 VOLUME_PHYSICAL_OFFSET結構的可變長度陣列。
磁碟區管理員會在緩衝區開頭的緩衝區開頭,於 Irp-AssociatedIrp.SystemBuffer> 傳回VOLUME_PHYSICAL_OFFSETS結構中的一或多個實體位移和磁碟編號。
輸出緩衝區長度
IRP I/O 堆疊位置中的 Parameters.DeviceIoControl.OutputBufferLength 表示輸出緩衝區的大小,以位元組為單位。
狀態區塊
如果作業成功, 狀態 成員會設定為 STATUS_SUCCESS。 否則, Status 成員會設定為適當的錯誤碼。 可能的錯誤碼包括:
STATUS_BUFFER_TOO_SMALL
輸出緩衝區太小。 磁碟區管理員會將 Irp-IoStatus.Information> 成員設定為呼叫端應該提供的輸出緩衝區大小。
STATUS_INVALID_PARAMETER
輸入緩衝區太小。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows XP 開始提供。 |
標頭 | ntddvol.h (包含 Ntddvol.h) |