Как писать в блочное устройство Windows напрямую?
Возможно, не совсем верная постановка вопроса, но суть такая. Мне нужно написать программу (язык - C#
), которая бы писала информацию о системе напрямую на "блочное устройство" (а если быть точнее, на заранее подготовленный raw раздел). Приведу аналогию с Unix:
~ # fdisk -l
/dev/sda1 - 64M - unknown partition # target "RAW" partition
/dev/sda2 - 100G - ext4
~ # echo "Log!" > /dev/sda1
Как вообще сделать подобное в Windows, где не соблюдается Unix-овый принцип "всё есть файл"?
P. S. Спрашивают: "Что в вашем понимании "Блочное устройство в Windows"?".
Ну, я имею в виду, грубо говоря, файл диска в Windows или что-то такое... Мне надо писать не в файл на диске, а в сам диск напрямую. Грубо говоря, как-то так:
RAWWriteToPartition(partition, bytes)
RAW DISK UNTIL WRITING:
# DISK IS GPT WITH PROTECTIVE MBR
| MBR HEADER | GPT HEADER | START PARTITION 1 | (empty) | END PARTITION 1 | START PARTITION 2 | ext4 file system... | END PARTITION 2|
AFTER WRITING:
| MBR HEADER | GPT HEADER | START PARTITION 1 | mybytes | END PARTITION 1 | START PARTITION 2 | ext4 file system... | END PARTITION 2|
Как-то так, если очень упрощенно. По крайней мере, если сделать в Unix echo bytes > /dev/sda1
, то именно это, именно так и произойдёт.
Источник: Stack Overflow на русском