Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Направления программирования
>
Drivers
(Модераторы:
Ochkarik
,
aks68
) > Тема:
Стек legacy драйверов
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Стек legacy драйверов (Прочитано 7370 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Scorp__)
Молодой специалист
Offline
Пол:
Стек legacy драйверов
«
:
12-01-2006 19:06 »
Раз уж начал спрашивать про реестр в одном разделе продолжу и в другом.
Подскажите, пожалуйста, каким образом формируется стек драйверов в legacy модели. Подозреваю, что это должно быть записано где-то в реестре, откуда же еще Device Manager может взять информацию когда формирует IRP и соответственно стек для IRP. Но нигде не могу найти. Кажется, что хожу вокруг, а уцепиться не могу.
Спасибо за помощь.
Записан
- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
SlavaI
Главный специалист
Offline
Re: Стек legacy драйверов
«
Ответ #1 :
23-01-2006 12:43 »
Нигде особо это не хранится. Стек формируется тем что драйвера сами прицепляют свои объекты к лругим объектам. Вся логика такая же как и у WDM, за исключением того что в WDM сама система вызовет все зарегистрированные фильтры и драйверы которые создают FDO и вызовет у них AddDevice, а в случае с legasy просто загрузит драйвер который сам уже разберется что делать и к кому цепляться. Информация при формировании IRP никогда не берется из реестра.
Записан
Scorp__)
Молодой специалист
Offline
Пол:
Re: Стек legacy драйверов
«
Ответ #2 :
24-01-2006 08:45 »
SlavaI, а как система определяет stacklocation'ы, которые присоединены к IRP? Просто если драйверу класса в системе, которую я исследую (и сопровождаю) приходит IRP, который надо обработать ниже, он делает IoGetNextIrpStackLocation, создает новый IRP и посылает его вниз с помощью IoCallDriver. А откуда stacklocation появился для нижнего драйвера непонятно
«
Последнее редактирование: 20-12-2007 16:48 от Алексей1153++
»
Записан
- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
SlavaI
Главный специалист
Offline
Re: Стек legacy драйверов
«
Ответ #3 :
24-01-2006 09:01 »
По полю StackSize в _DEVICE_OBJECT
typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT) _DEVICE_OBJECT {
CSHORT Type;
USHORT Size;
LONG ReferenceCount;
struct _DRIVER_OBJECT *DriverObject;
struct _DEVICE_OBJECT *NextDevice;
struct _DEVICE_OBJECT *AttachedDevice;
struct _IRP *CurrentIrp;
PIO_TIMER Timer;
ULONG Flags; // See above: DO_...
ULONG Characteristics; // See ntioapi: FILE_...
PVPB Vpb;
PVOID DeviceExtension;
DEVICE_TYPE DeviceType;
CCHAR StackSize;
union {
LIST_ENTRY ListEntry;
WAIT_CONTEXT_BLOCK Wcb;
} Queue;
ULONG AlignmentRequirement;
KDEVICE_QUEUE DeviceQueue;
KDPC Dpc;
//
// The following field is for exclusive use by the filesystem to keep
// track of the number of Fsp threads currently using the device
//
ULONG ActiveThreadCount;
PSECURITY_DESCRIPTOR SecurityDescriptor;
KEVENT DeviceLock;
USHORT SectorSize;
USHORT Spare1;
struct _DEVOBJ_EXTENSION *DeviceObjectExtension;
PVOID Reserved;
} DEVICE_OBJECT;
При IoGetNextIrpStackLocation не создается новый IRP - код то посмотри этой ф-ции.
Записан
Scorp__)
Молодой специалист
Offline
Пол:
Re: Стек legacy драйверов
«
Ответ #4 :
24-01-2006 13:16 »
Я знаю что не создается новый IRP по IoGetNextIrpStackLocation. Это у меня он в функции драйвера создается потом. Я там запятую между прочим поставил
Ладно тогда посмотрю, что там в IoCallDriver происходит на самом деле.
Записан
- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
SlavaI
Главный специалист
Offline
Re: Стек legacy драйверов
«
Ответ #5 :
25-01-2006 08:12 »
В IoCallDriver ничего интересного кроме IoSetNextIrpStackLocation не происходит, все происходит при создании IRP.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Направления программирования
>
Drivers
(Модераторы:
Ochkarik
,
aks68
) > Тема:
Стек legacy драйверов
Загружается...