Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Кто видел драйвер с AddDevice загружаемый через SCM ?

5.8K
05 марта 2004 года
Mayor
6 / / 05.03.2004
Меня интересует как реализовать драйвер :

после выхода из DriverEntry вызывается _IopIsLegacyDriver в ее основе лежит проверка DriverObject->DeviceExtension->AddDevice, в случае если там окажется адрес процедуры то после возрата следует цепочка из недокументированных подпрограмм часть из них вроде рыщет в реестре , и в итоге у меня выгружается драйвер =>

Что нужно добавить в DriverObject до выхода ?

Загрузка драйвера вроде бы осуществляется системным потоком поэтому я пока не могу понять что он вызывает может кто это знает ? =>

что происходит перед вызавом DriverEntry ?
6.0K
10 марта 2004 года
TarasCo
28 / / 10.03.2004
DriverEntry вызывается сразу после загрузки драйвера. В ней обычно делается следующее: устанавливаются диспетчеры:

DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DriverDeviceIoControl;
DriverObject->MajorFunction[IRP_MJ_CREATE] = DriverCreate;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = DriverClose;

Устанавливается процедура, вызываемая при выгрузке:

DriverObject->DriverUnload = DriverUnload;

Если драйвер поддерживает pnp, то функция, вызываемая при обнаружениии устройства:
DriverObject->DeviceExtension->AddDevice = DriverAddDevice;

Ваш драйвер выгружается возможно из-за того, что DriverEntry возвращает код, отличный от STATUS_SUCCESS
Также возможно, не хватает диспетчера IRP_MJ_PNP
5.8K
11 марта 2004 года
Mayor
6 / / 05.03.2004
Ваш драйвер выгружается возможно из-за того, что DriverEntry возвращает код, отличный от STATUS_SUCCESS
Также возможно, не хватает диспетчера IRP_MJ_PNP


нет несмотря на возврат DriverEntry StatusSuccess система его дальше подменяееит и выгружает драйвер иммено из-за того что в DriverObject->DriverExtension->AddDevice расположен не 0
6.0K
11 марта 2004 года
TarasCo
28 / / 10.03.2004
Цитата:
из-за того что в DriverObject->DriverExtension->AddDevice расположен не 0


А как Вы узнаете, что драйвер выгружен. Unload вызывается? Может драйвер не выгружается? В принципе, система не обязана вызывать AddDevice в любом случае. В этом случае драйвер будет просто висеть без дела. AddDevice будет вызвана при обнаружении определенного физического устройства (например, для ЮСБ - с заданными VID и PID). Далее сканируется реестр на предмет обнаружения сервиса с подходящим Enum (CurrentControlSet/Services)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог