ТОП 10:

Точки входа драйвера устройства



 

 


Объект драйвера (DRIVER_OBJECT)

§ Представляет отображение драйвера в памяти

§ Только один экземпляр драйвера может быть загружен в системную память

§ Драйверы должны быть в состоянии поддерживать многократные экземпляры аппаратных средств

§ Выделенный, когда драйвер загружен в память и освобожден, когда драйвер разгружен из памяти

§ Содержит следующее:

§ Список устройств создан драйвером

§ Указатели на точки входа драйверов

§ Указатель на имя службы, соответствующей этому драйверу

· Это имя может отличаться от двоичного имени файла драйвера

§ Начальный адрес и размер двухуровневого изображения драйвера в памяти

§ Указатель на объект драйвера передают к DriverEntry () и AddDevice () подпрограммы

 


Объект устройства (DEVICE_OBJECT)

§ Представляет физические аппаратные средства или логическое устройство

§ Состоит из 2 частей:

§ Заголовка фиксированной длины: DEVICE_OBJECT (определенная система)

§ Расширения переменной длины: Device extension (определенный драйвер)

§ Часть цепочки DOs создана драйвером

§ Может иметь/не иметь имя

§ Имя может быть обеспечено создателем

§ Имя может быть автоматически сгенерировано ОС

· FILE_AUTOGENERATED_DEVICE_NAME

§ Поле AttachedDevice указывает на

объект устройства, который является многоуровневым

§ Создается драйверами устройств вызовом IoCreateDevice ()

§ Удаляется драйверами устройств вызовом IoDeleteDevice ()

 


Объект файла (FILE_OBJECT)

§ Представляет открытый экземпляр объекта устройства

§ FO ссылается на DO, много FOs могут ссылаться на один DO

§ DO не ссылается ни на один FO

§ Создание FO: CreateFile ()/ZwCreateFile ()

§ Удаление FO: CloseHandle ()/ZwClose ()

§ FO-> FsContext и FO-> FsContext2 обычно хранить особую информацию объекта файла, требуемую драйверами

§ поле FO-> FileName указывает на часть имени файла, интерпретируемую драйвером устройства или драйвером файловой системы (FSD)

§ FILE_OBJECTs для FSDs указывают на блок параметров тома(VPB)

§ VPB представляет отношение между файловой системой и смонтированным томам

§ Поле FO-> Event используется, чтобы блокировать обращения потоков с синхронными запросами, которые обрабатываются асинхронно драйверами

 


Объектные Отношения

 

§ DRIVER_OBJECT – представляет изображение драйвера устройства

§ Содержит главу списка объектов устройства, создаваемых драйвером

§ DEVICE_OBJECT – представляет логическое или физическое устройство

§ Содержит указатель на объект драйвера, который создал его

§ Часть списка объектов устройства в драйвере

§ FILE_OBJECT – представляет открытый экземпляр устройства

§ Содержит указатель на объект устройства, открытый экземпляр которого он представляет

 


Пакет запросов на ввод-вывод (IRP)

§ Описывает запрос ввода-вывода

§ Состоит из 2 частей:

§ Заголовка фиксированной длины (IRP)

§ Переменного числа ввода-вывода позиций стека (IO_STACK_LOCATION)

§ Выделен диспетчером ввода-вывода в результате запроса приложения пользовательского режима или запроса драйвера

§ Может быть выделен драйверами, которые будут диспетчеризированы другим драйверам DeviceExtension

§ Выделен от нестраничных ассоциированных списков

§ IoCompleteRequest () освобождает IRP после завершения использования драйвером

§ IoCallDriver () передает IRP драйверам

§ Драйвер получает IRP, чтобы диспетчеризировать точки входа


Расположение Стека ввода-вывода (IO_STACK_LOCATION)

§ Содержит параметры ввода-вывода для определенного драйвера в стеке многоуровневых драйверов

§ Один IOSL для каждого драйвера в стеке

§ Инициализируется предыдущим драйвером в стеке

§ Сначала IOSL инициализирован Диспетчером ввода-вывода

§ Содержит:

§ Указатель на объект конечного файла и объект устройство для запроса

§ Информацию, определенную для главной функции кода

§ Указатель на драйвер, зарегистрировавший процедуру завершения и контекст







Последнее изменение этой страницы: 2016-08-26; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.226.243.226 (0.004 с.)