Как программы создают виртуальное оборудование?

Я видел такие программы, как magicdisc, которые создают виртуальные приводы компакт-дисков и монтируют их на машине. Как эти программы обманывают операционную систему, заставляя ее думать, что к ней подключено новое аппаратное устройство?

Я предполагаю, что мне придется написать драйвер для виртуального оборудования, и мне удобно на 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 как с прикладным уровнем, который находится выше ОС. Виртуальный драйвер - это часть программного обеспечения, но нужно прописать в соответствующих местах настройки: реестр в Windows, какой-то файл конфигурации в некоторых Linux. Вам необходимо обрабатывать вызовы и обратные вызовы уровня ОС на уровне ядра. Затем вам понадобится программное обеспечение для связи с вашим устройством, возможно, интегрированное в OS Shell. Минимум 2 кладки будет, если не 3 и больше.

Например, для Windows XP вы можете сделать виртуальную графическую карту (и перехватывать разные вещи), для Vista нет, просто с помощью трюка :)

Это очень-очень специфично для ОС.

person Community    schedule 04.09.2012