Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как отличить виртуальный привод от реального? [D7, WinXP]


Страницы:   1 2

r@bbit ©   (2006-06-15 09:26:00) 

вот задался вопросом - такое вообще возможно? или штатными средствами винды никак не получится? и к слову - какая функция ядра добавляет виртуальный диск к списку дисков? ну как алкоголь делает. подскажите кто знает, заранее благодарен


r@bbit   (2006-06-22 17:26:00) [1]

ёлки блин - DeviceName. перепутал малость :)


tesseract   (2006-06-22 09:10:00) [2]


> Нет. У виртуальных (любых) отсутствует DriverName :)

хм. Странно.  Хотя я видел некоторые вещи с отсутсвующим.


r@bbit   (2006-06-21 21:10:00) [3]

Нет. У виртуальных (любых) отсутствует DriverName :)


tesseract   (2006-06-21 16:30:00) [4]


> r@bbit   (20.06.06 18:34) [23]

Просто внёс ID "виртуальщиков" в чёрный список?


Дмитрий Белькевич   (2006-06-21 02:14:00) [5]

Самое главное, что бы на реальные сидюки как на виртуальные не ругалась, т.к. это гораздо хуже. Я на месте юзера очень долго бы ругался на такую 'защиту'.


r@bbit   (2006-06-20 18:34:00) [6]

Агроменное СПАСИБО всем за советы, не бросившим меня в беде! Защита получилась, не старфорс конечно, но чтобы сломать придётся малость попыхтеть, и этого для институтских админов вполне достаточно.
>Игорь Шевченко
отдельно спасибо, работает, именно сканируя реестровые ключи... жаль что обращения к реестру отлавливаются куда проще, чем к портам, но пока сойдёт и так. проверял - защита успешно ругается на все доступные мне виртуальщики. что и требовалось :)


Belorus   (2006-06-19 20:44:00) [7]

Хехе. Вопрос на 10 баллов.
Как отличить виртуальный привод от реального.

Ты у создателей старфорс спроси. Они много лет бьются и на данный момент только FrontLine что-то делает. А родимый StarForce 3.x и тот ломается.
А товарищ захотел пару строчек кода чтобы привод отличить.
Молодец.

В орехи.


evvcom   (2006-06-19 14:24:00) [8]

> \Device\Ide\IdePort(n) - для реального привода
> \Device\Scsi\sojuscsi(n) - для виртуальника

Если реальный SCSI повесишь, наверняка разочаруешься в своих выводах. Ищи драйвера, тебе говорят.


Игорь Шевченко   (2006-06-19 13:19:00) [9]

Я бы обратил внимание на реестр :) Виртуальных CD-ROM у меня нет, так что направлений определеннее подсказать не могу. Список драйверов - он в реестре.


r@bbit   (2006-06-19 12:33:00) [10]

покопавшись? выяснил следующее:
1. QueryDosDevices с именем диска возвращает \Device\CdRom(n)

2. QueryDosDevices с именем виртуального SCSI (например SCSI1:) возвращает:
\Device\Ide\IdePort(n) - для реального привода
\Device\Scsi\sojuscsi(n) - для виртуальника
т.е. различие есть

вопрос возник такой - можно ли по имени из пункта 1 получить виртуальный SCSI порт, к которому это устройство подключено? какой функцией, если она есть конечно? в пункте 2 как я понял возвращается имя драйвера устройства, встречалось либо IdeChnDr(n) либо IdePort(n). Подскажите плз, чую что рядом с решением топчусь да всё никак


Игорь Шевченко   (2006-06-16 10:46:00) [11]


> через утилиту objdir.exe. С ее помощью получаем список устройств
> и шины на которых они "висят".


Winobj.exe от SysInternals вроде показывает только список устройств, без шин. Сдается мне, что проще искать по списку аппаратных устройств реестре - HKLM\HARDWARE\DESCRIPTION


r@bbit   (2006-06-16 09:13:00) [12]

В принципе различия есть - судя по статейке из книги К.Касперски - например через утилиту objdir.exe. С ее помощью получаем список устройств и шины на которых они "висят". С реальными приводами всё нормально возвращается ...\Ide0 или Ide1, а вот виртуальники естественно никаких физических шин не имеют! Какой функцией можно узнать с какой именно шиной связано устройство и есть ли она вообще (шина у устройства)? От устройства имеем дескриптор. Или хотя бы получить имя драйвера с которым устройство связано... в общем сплошная головная боль. помогите кто может, плиз.


r@bbit   (2006-06-16 07:58:00) [13]

На реальный привод в буфер получил Device\CdRom0
на виртуальник такое Device\CdRom1
и что с этим делать не знаю... :(


r@bbit   (2006-06-15 15:47:00) [14]

>Игорь Шевченко
спасибо ! думаю всё получится :)


Игорь Шевченко   (2006-06-15 15:27:00) [15]

r@bbit   (15.06.06 14:55) [12]

Спроси QueryDosDevice на букву сидюка


r@bbit   (2006-06-15 14:58:00) [16]

т.е. DeviceIoControl :)


r@bbit   (2006-06-15 14:55:00) [17]

hCD = CreateFile('\\\\.\буква сидюка.... и т.д.
ну это было в примере по юзанию IoDeviceControl


Игорь Шевченко   (2006-06-15 14:45:00) [18]


> хэндл устройства получаю


Как ?


r@bbit   (2006-06-15 14:41:00) [19]

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


Ihor Osov'yak   (2006-06-15 12:38:00) [20]

в конце концов можно подсадить свой фильтр на драйвер, который обслуживает идешные и скази шины, может еще юсб - и посмотреть, будут проходить запросы на соотв. шины, когда мы со своего приложения попытаемся обратится к СД приводу..  думаю, это тоже может быть критерием..


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо