2016-01-06 111 views
0

我正在使用DeviceIoControl Windows函數使用IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS來確定每個卷使用哪些分區。我使用該功能,然後檢查其駐留在磁盤我感興趣的每個卷的範圍獲取數據VOLUME_DISK_EXTENTS錯誤信息

根據這一頁:https://msdn.microsoft.com/en-us/library/windows/desktop/aa363968(v=vs.85).aspx

返回的數據應該說明每個程度以字節爲單位的偏移距離磁盤的開始,以字節爲單位的長度。但是,我收到的信息似乎是錯誤的。

我感興趣的物理磁盤是500105249280字節長。然而,我從DeviceIoControl獲得的數據表明,其中一個卷位於範圍爲499210256384的範圍內,長度爲896532480。這使得範圍的末尾在抵消500106788864明顯超過磁盤的末尾。

這似乎與上面鏈接的文檔相沖突。任何人都可以告訴我,如果我錯過了別的東西嗎?或者這是我的個人電腦的問題?

+0

您是如何確定物理磁盤的大小的?您是否嘗試過,例如,從相關偏移處的磁盤讀取扇區,並將其與從卷讀取的第一個扇區進行比較? –

回答

0

原來我得到的磁盤大小錯誤。我更改了我的代碼以使用DeviceIoControl使用IOCTL_DISK_GET_LENGTH_INFO檢索磁盤大小,現在它似乎正在正常工作