質問するログイン新規登録

質問編集履歴

6

QueryDosDevice より、HarddiskVolumeX を取得する云々の追加

2018/08/20 02:45

投稿

juner
juner

スコア754

title CHANGED
File without changes
body CHANGED
@@ -40,6 +40,18 @@
40
40
  [juner/IoControl#93f655872fb7bda6e60d0f0ca13ff96c47680e30](https://github.com/juner/IoControl/tree/93f655872fb7bda6e60d0f0ca13ff96c47680e30)
41
41
  の[IoControlPhysicalExample](https://github.com/juner/IoControl/tree/93f655872fb7bda6e60d0f0ca13ff96c47680e30/IoControlPhysicalExample)
42
42
 
43
+ ####`QueryDosDevice()` より取得されたパス群の中より、ボリュームを探して取得
44
+ `QueryDosDevice()`より取得したデバイス名群より、`HarddiskVolumeX` 形式の名前を探し、それを元に`IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS`を実施した。
45
+ |FilePath|StartOffset|ExtentLength|StartOffset+ExtentLegnth|
46
+ |:--|--:|--:|--:|
47
+ |\.\HarddiskVolume1|1048576|104857600|105906176|
48
+ |\.\HarddiskVolume2|106954752|133169152|240123904|
49
+ |\.\HarddiskVolume10|105097723904|895106416640|1000204140544|
50
+
51
+ 一部のパーティションが取得できていないが、これがほしかった情報であろうか?
52
+
53
+ このコードは FindVolume で取得されたVolumeに対しての読み込み の確認に使ったコードに含まれる。
54
+
43
55
  #### GPTPartition情報を直に読み込む
44
56
  |PartitionNumber|First(LBA8)|Last(LBA8)|SectorSize|First*SectorSize|Last*SectorSize|
45
57
  |:--|--:|--:|--:|--:|--:|

5

言葉足らずだったので文言修正

2018/08/20 02:45

投稿

juner
juner

スコア754

title CHANGED
File without changes
body CHANGED
@@ -28,12 +28,13 @@
28
28
  Partition 4 ダイナミック データ 931 GB 229 MB
29
29
  ```
30
30
 
31
- ####FindVolume による読み込み
31
+ ####FindVolume で取得されたVolume対しての読み込み
32
+ FindVolume で取得されたVolumeに対して `IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS`により読み込んだ場合対象のドライブに関しての情報は次のものだけとなった。
32
33
  |StartOffset|ExtentLength|StartOffset+ExtentLegnth|
33
34
  |--:|--:|--:|
34
35
  |105097723904|895106416640|1000204140544|
35
36
 
36
- マウントしているボリュームのみ取得される様で、RAID構成されているDドライブの位置だけわかる状態となっておりました。(4ドライブの位置も取得されているがここでは要な為、省略。
37
+ マウントしているボリュームのみ取得される様で、RAID構成されているDドライブの位置だけわかる状態となっておりました。(4ディスクの位置も取得されているがここでは要な情報だけ載せる形で省略。
37
38
 
38
39
  使用したコード
39
40
  [juner/IoControl#93f655872fb7bda6e60d0f0ca13ff96c47680e30](https://github.com/juner/IoControl/tree/93f655872fb7bda6e60d0f0ca13ff96c47680e30)

4

計算誤り

2018/08/20 02:17

投稿

juner
juner

スコア754

title CHANGED
File without changes
body CHANGED
@@ -29,9 +29,9 @@
29
29
  ```
30
30
 
31
31
  ####FindVolume による読み込み
32
- |StartOffset|ExtentLength|StartOffset+ExtentLegnth
32
+ |StartOffset|ExtentLength|StartOffset+ExtentLegnth|
33
- |--:|--:|--:
33
+ |--:|--:|--:|
34
- |105097723904|895106416640|105097723904
34
+ |105097723904|895106416640|1000204140544|
35
35
 
36
36
  マウントしているボリュームのみ取得される様で、RAID構成されているDドライブの位置だけわかる状態となっておりました。(他4ドライブの位置も取得されているがここでは不要な為、省略。
37
37
 

3

試したことを追加。

2018/08/20 02:09

投稿

juner
juner

スコア754

title CHANGED
File without changes
body CHANGED
@@ -15,6 +15,9 @@
15
15
  想定していた隙間がどこにも空いていませんでした。
16
16
 
17
17
  ### 試したこと
18
+ 以下の方法を試しました。
19
+ #### list partition
20
+
18
21
  尚、`disikpart` で `list partition` すると、次の様な表示となりました。
19
22
  ```diskpart
20
23
  Partition ### Type Size Offset
@@ -25,6 +28,31 @@
25
28
  Partition 4 ダイナミック データ 931 GB 229 MB
26
29
  ```
27
30
 
31
+ ####FindVolume による読み込み
32
+ |StartOffset|ExtentLength|StartOffset+ExtentLegnth
33
+ |--:|--:|--:
34
+ |105097723904|895106416640|105097723904
35
+
36
+ マウントしているボリュームのみ取得される様で、RAID構成されているDドライブの位置だけわかる状態となっておりました。(他4ドライブの位置も取得されているがここでは不要な為、省略。
37
+
38
+ 使用したコード
39
+ [juner/IoControl#93f655872fb7bda6e60d0f0ca13ff96c47680e30](https://github.com/juner/IoControl/tree/93f655872fb7bda6e60d0f0ca13ff96c47680e30)
40
+ の[IoControlPhysicalExample](https://github.com/juner/IoControl/tree/93f655872fb7bda6e60d0f0ca13ff96c47680e30/IoControlPhysicalExample)
41
+
42
+ #### GPTPartition情報を直に読み込む
43
+ |PartitionNumber|First(LBA8)|Last(LBA8)|SectorSize|First*SectorSize|Last*SectorSize|
44
+ |:--|--:|--:|--:|--:|--:|
45
+ |1|0x800|0x327FF|512|1048576|105905664|
46
+ |2|0x32800|0x32FFF|512|105906176|106954240|
47
+ |3|0x33000|0x727FF|512|106954752|240123392|
48
+ |4|0x72800|0x74706D8E|512|240123904|1000204868608|
49
+
50
+ First*SectorSize が合致しているのでこの情報はほぼ同じ情報と想定される。Last*SectorSize がずれるのは誤差?
51
+
52
+ 確認に使用したコード
53
+ [juner/ReadHeader#8591d9704b9b5dd4c2ffdc2192e9c779563c89e5](https://github.com/juner/ReadHeader/tree/8591d9704b9b5dd4c2ffdc2192e9c779563c89e5)
54
+ の [ReadHeaderExample](https://github.com/juner/ReadHeader/tree/8591d9704b9b5dd4c2ffdc2192e9c779563c89e5/ReadHeaderExample)
55
+
28
56
  ### 補足情報(FW/ツールのバージョンなど)
29
57
  OS: Windows10 (1803)
30
58
 

2

ダイナミックディスクであることを記載。

2018/08/20 02:05

投稿

juner
juner

スコア754

title CHANGED
@@ -1,1 +1,1 @@
1
- GPTなPhysicalDriveから パーティションの空き位置の情報の取得方法について
1
+ ダイナミックディスクでGPTなPhysicalDriveから パーティションの空き位置の情報の取得方法について
body CHANGED
@@ -1,6 +1,7 @@
1
1
  ### 前提・実現したいこと
2
- 現在、ディスクの管理にて次の様に表示されるGPTなドライブよりパーティションの空き情報を取得方法を探しています。
2
+ 現在、ディスクの管理にて次の様に表示されるダイナミックディスクでGPTなドライブよりパーティションの空き情報を取得方法を探しています。
3
3
  [100MB 正常(EFI システムパーティション)][97.66GB 未割り当て][D: 833.63GB NTFS 正常]
4
+ ※ソフトウェアRAIDを使用している4つのディスクの一つとなっております。
4
5
 
5
6
  ### 発生している問題
6
7
  パーティションの空き情報はパーティションの情報からることができる思い、 GPTな物理ドライブの `\.\PhysicaDrive0` より `DeviceIoControl` の `IOCTL_DISK_GET_DRIVE_LAYOUT_EX` 経由でパーティション間の空き領域情報を取得しようとしてみたのですが、それにより取得される。 `DRIVE_LAYOUT_INFORMATION_EX` の `PartitionEntry[]` こと `PARTITION_INFORMATION_EX` に設定される パーティションの各情報は次の様な形となります。

1

IOCTL_DISK_GET_DRIVE_LAYOUT_EX を GPTな物理ドライブ \\.\PhysicalDrive0 から DeviceIoControl で取得している旨を記述

2018/08/16 02:56

投稿

juner
juner

スコア754

title CHANGED
@@ -1,1 +1,1 @@
1
- GPTPhysicalDriveから パーティションの空き位置の情報の取得方法について
1
+ GPTPhysicalDriveから パーティションの空き位置の情報の取得方法について
body CHANGED
@@ -3,7 +3,7 @@
3
3
  [100MB 正常(EFI システムパーティション)][97.66GB 未割り当て][D: 833.63GB NTFS 正常]
4
4
 
5
5
  ### 発生している問題
6
- パーティションの空き情報はパーティションの情報からとれると思い、`IOCTL_DISK_GET_DRIVE_LAYOUT_EX` 経由でパーティション間の空き領域情報を取得しようとしてみたのですが、それにより取得される。 `DRIVE_LAYOUT_INFORMATION_EX` の `PartitionEntry[]` こと `PARTITION_INFORMATION_EX` に設定される パーティションの各情報は次の様な形となります。
6
+ パーティションの空き情報はパーティションの情報からるができる思い、 GPTな物理ドライブの `\.\PhysicaDrive0` より `DeviceIoControl` の `IOCTL_DISK_GET_DRIVE_LAYOUT_EX` 経由でパーティション間の空き領域情報を取得しようとしてみたのですが、それにより取得される。 `DRIVE_LAYOUT_INFORMATION_EX` の `PartitionEntry[]` こと `PARTITION_INFORMATION_EX` に設定される パーティションの各情報は次の様な形となります。
7
7
  |PartitionNumber|StartOffset|PartitionLength|StartOffset+PartitionLength|Type|
8
8
  |:--|--:|--:|--:|:--:|
9
9
  |1|1048576|104857600|105906176|c12a7328-f81f-11d2-ba4b-00a0c93ec93b|