Как програмите създават виртуален хардуер?

Виждал съм програми като magicdisc да създават виртуални cd устройства и да ги монтират на машината. Как тези програми подвеждат операционната система да мисли, че към нея е свързано ново хардуерно устройство?

Предполагам, че ще трябва да напиша драйвер за виртуалния хардуер и се справям добре с C, така че това не звучи ужасно, но как да накарам операционната система да мисли, че към нея има свързан хардуер, който не е?

Благодаря!


person Dabloons    schedule 04.09.2012    source източник
comment
codeproject.com/Articles/58950/   -  person perilbrain    schedule 04.09.2012


Отговори (2)


Обикновено операционната система има различни слоеве и библиотеки, в даден момент има библиотека, която се намира между нещо над нея и действителния хардуер, вие го фалшифицирате там, ако има някакъв вид извикване на сектор за четене, вие се преструвате, че четете сектор, използвайки този секторен адрес, прочете го от файл, каквото и да е. Всяка операционна система (windows, linux и т.н.) може да прави нещата по различен начин.

person old_timer    schedule 04.09.2012
comment
друг начин да се каже е, че има драйвери, които от долната страна общуват с хардуера от горната страна (на някакъв слой) имат общ интерфейс, така че например всички видео драйвери да могат да се включват в операционна система или всички драйвери на звукова карта, и т.н. Намирате този общ слой или един от общите слоеве, от който искате да започнете, и внедрявате виртуалния хардуер под него. - person old_timer; 05.09.2012

Вероятно сте запознати с C като ниво на приложение, което е над OS. Виртуалният драйвер е част от софтуера, но трябва да запише на правилните места настройките: регистър в Windows, някакъв конфигурационен файл в някои Linux. Трябва да управлявате извиквания и обратни извиквания на ниво ОС на ниво ядро. След това ще искате софтуерът също да комуникира с вашето устройство, вероятно интегрирано в OS Shell. Ще има поне 2 снасяния, ако не и 3 или повече.

Например за windows xp можете да направите виртуална графична карта (и да прихващате различни неща), за Vista не, само с трик :)

Това е много-много специфично за ОС.

person Community    schedule 04.09.2012