ВУЗ:
Составители:
26
(PDRIVER_ADD_DEVICE). В AddDevice хранится указатель на функцию
драйвера, создающую объекты устройств.
Поле HardwareDatabase (PUNICODE_EXTENSION) хранит строку с
именем раздела данного устройства в системно реестре. Имя имеет вид
\Registry\Machine\Hardware\Description\System и определяет раздел реестра,
содержащий информацию о выделенных ресурсах. Для WDM-драйверов эта
информация не нужна, так как ресурсами занимается диспетчер PnP.
Во всех строковых
данных режима ядра используется Юникод.
Поле FastIoDispatch (PFAST_IO_DISPATCH) ссылается на таблицу,
которая содержит указатели на функции, экспортируемые файловой системой и
сетевыми драйверами.
Поле DriverInit (PDRIVER_INIT) содержит указатель на функцию
инициализации драйвера. Функция инициализации индивидуальная для каждого
драйвера.
Поле DriverStartIo (PDRIVER_STARTIO) содержит указатель на функцию
обработки запросов ввода-вывода, подготовленных диспетчером ввода-вывода.
Поле DriverUnload (PDRIVER_UNLOAD) указывает на функцию
деинициализации драйвера
. (Вспомним, что выгрузкой WDM-драйверов
занимается операционная система.)
Поле MajorFunction (PDRIVER_ DISPATCH) содержит таблицу
указателей на функции драйвера обрабатывающие запросы ввода-вывода. Таких
запросов может быть более 20 типов. Эти функции и определяют
функциональность драйвера.
2.2 Объекты устройств
Формат объекта устройства показан на рисунке 2.2. Здесь, как и ранее,
серым фоном показаны закрытые поля.
Создается
такой объект вызовом функции IoCreateDevice. При разработке
WDM-драйвера приходится часто использовать эту функцию.
(PDRIVER_ADD_DEVICE). В AddDevice хранится указатель на функцию драйвера, создающую объекты устройств. Поле HardwareDatabase (PUNICODE_EXTENSION) хранит строку с именем раздела данного устройства в системно реестре. Имя имеет вид \Registry\Machine\Hardware\Description\System и определяет раздел реестра, содержащий информацию о выделенных ресурсах. Для WDM-драйверов эта информация не нужна, так как ресурсами занимается диспетчер PnP. Во всех строковых данных режима ядра используется Юникод. Поле FastIoDispatch (PFAST_IO_DISPATCH) ссылается на таблицу, которая содержит указатели на функции, экспортируемые файловой системой и сетевыми драйверами. Поле DriverInit (PDRIVER_INIT) содержит указатель на функцию инициализации драйвера. Функция инициализации индивидуальная для каждого драйвера. Поле DriverStartIo (PDRIVER_STARTIO) содержит указатель на функцию обработки запросов ввода-вывода, подготовленных диспетчером ввода-вывода. Поле DriverUnload (PDRIVER_UNLOAD) указывает на функцию деинициализации драйвера. (Вспомним, что выгрузкой WDM-драйверов занимается операционная система.) Поле MajorFunction (PDRIVER_ DISPATCH) содержит таблицу указателей на функции драйвера обрабатывающие запросы ввода-вывода. Таких запросов может быть более 20 типов. Эти функции и определяют функциональность драйвера. 2.2 Объекты устройств Формат объекта устройства показан на рисунке 2.2. Здесь, как и ранее, серым фоном показаны закрытые поля. Создается такой объект вызовом функции IoCreateDevice. При разработке WDM-драйвера приходится часто использовать эту функцию. 26
Страницы
- « первая
- ‹ предыдущая
- …
- 24
- 25
- 26
- 27
- 28
- …
- следующая ›
- последняя »