それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

\\.\PHYSICALDRIVE1などWinの物理ディスク情報を調べる。

\.\PHYSICALDRIVE1などのディスク情報を調べる。

\.\PHYSICALDRIVE1

参考資料のとおりにコマンドを入れてみる。

Get-WmiObject Win32_DiskDrive | Select-Object -Property BytesPerSector, DeviceID, Model, Partitions, Size | Sort-Object DeviceID | Out-GridView

DataGridView って Ps から簡単に使えるんですね

wmic でやると

wmic でやると、ちょっとめんどくさい。

結果は長いので、vim などで見た方がいい

wmic partition list > part.txt
wmic diskdrive list > disk.txt
wmic volume list > vol.txt
wmic logicaldisk list > letters.txt
vim disk.txt

横ではなく縦に並べれば、詳細を見るのが便利かもしれない。

wmic partition get \* /format:list

ちなみに、番号を調べるだけなら、diskpartでもいい。

DISKPART> list disk
DISKPART> select disk 1
DISKPART> list part

パーティションが複数ある場合

\device\harddisk1\partition1

ディスクの採番書式

ディスクの番号の割当は、次のように順番になっている。

パーティション1と2という2つのパーティション構成のストライプボリュームがあるとしましょう。このボリュームは、図10-16のように、\Device\HarddiskVolumes\PhysicalDmVolumes\BlockVolume3というデバイスオブジェクトとして表現されているとします。また、管理者はこのストライプボリュームにドライブ文字Dを割り当て、I/Oマネージャは\Device\HarddiskDmVolumes\ComputerNameDg0\Volume3を参照するために、\Global??\D:というシンボルリンクを定義しているものとします。既に説明したように、このシンボルリンクは https://atmarkit.itmedia.co.jp/fwin2k/bookpreview/insidewin42/insidewin42_07.html

https://docs.oracle.com/cd/E57425_01/121/NTQRF/ap_raw.htm

物理ディスクは、ディスク全体を示し、次のように指定します。

\Device\Harddiskx\Partition0

シンボリック・リンク名\.\PhysicalDrivexは、コンピュータ内のすべてのハード・ディスクに対して、Windowsによって自動的に定義されます。たとえば、3つのハード・ディスクがあるコンピュータには、次のシンボリック・リンクがあります。 txt \\.\PhysicalDrive0 \\.\PhysicalDrive1 \\.\PhysicalDrive2 これらの名前は、内部的に次のように展開されます。

\\.\PhysicalDrive0 =\Device\Harddisk0\Partition0 
\\.\PhysicalDrive1 =\Device\Harddisk1\Partition0 
\\.\PhysicalDrive2 =\Device\Harddisk2\Partition0 

ということなので、パーティション番号とディスク番号がわかれば、そのドライブへアクセスできるとわかる。

たとえば、\\.\PHYSICALDRIVE1 があって、次のように wmic partition list の結果があったとする

GPT: Unknown     Disk #1, Partition #0  1
GPT: Unknown     Disk #1, Partition #1  1
GPT: Unknown     Disk #1, Partition #2  1

すると、次のようにアクセスできるはずである。

\Device\Harddisk1\Partition0 

ポイントとしては、パーティションはゼロから数えるということ。

msys / wsl から dd で 生デバイスにアクセスできるか試す。

msys で dd すれば良さそうに思えるが、\\?\Device\にはアクセスできずに、ファイルが作成されている。つまり、cygwin/msys のdd コマンドは、生デバイスをアクセス不能

何なら、WSLのDDもあるが、msysと同じくデバイスにはアクセスできずに終わる。

dd for windows なら

Windows版のDDコマンドを使うしかなさそうですね。

dd の windows 版を試してみる。 .\dd.exe if="d:\sdb3.img" of='\\?\Device\Harddisk1\Partition2' --progress 出来たっぽい

rufus は?

rufus はドライブが見えないとだめだしなぁ 内部的には使ってるんだろうけど、UIで見れない。

Drive? を扱うには

rawrite や windows 版 dd.exe を使うしかなさそう

パーティションtoパーティションってWindowsでは茨の道ですわ。

参考資料