ВУЗ:
Составители:
33
Следует иметь в виду, что при завершении функции DriverEntry с ошибкой,
система не вызывает функцию DriverUnload. Поэтому, если функция DriverEntry
успела что-то натворить до выхода с ошибкой, она должна сама все исправить.
2.5 Функция AddDevice
Если драйвер обслуживает более одного физического устройства, он должен
включать в себя специальную функцию AddDevice
. Диспетчер PnP вызывает ее
для каждого дополнительного устройства.
Функция выглядит примерно так:
NTSTATUS AddDevice(PDRIVER_OBJECT DriverObject,
PDEVICE_OBJECT pdo)
{
Return STATUS_SOMETHING; //Например, STATUS_SUCCESS
}
Аргумент DriverObject указывает на объект драйвера, инициализированный
функцией DriverEntry. Аргумент pdo содержит адрес объекта физического
устройства в нижней части стека.
Основные действия, выполняемые функцией AddDevice:
− Вызов IoCreateDevice для создания объекта устройства и экземпляра
объекта расширения устройства.
− Регистрация одного или нескольких интерфейсов устройства для связи с
приложениями. Другой способ связи
с приложениями – присвоение
имени объекту и создание символической ссылки.
− Инициализация объекта расширения устройства и поля Flags объекта
устройства.
− Вызов функции IoAttachDeviceToDeviceStack для включения нового
объекта в стек.
2.6 Создание объекта устройства
Для создания объекта устройства вызывается функция IoCreateDevice.
Пример такого вызова приведен ниже:
Следует иметь в виду, что при завершении функции DriverEntry с ошибкой, система не вызывает функцию DriverUnload. Поэтому, если функция DriverEntry успела что-то натворить до выхода с ошибкой, она должна сама все исправить. 2.5 Функция AddDevice Если драйвер обслуживает более одного физического устройства, он должен включать в себя специальную функцию AddDevice. Диспетчер PnP вызывает ее для каждого дополнительного устройства. Функция выглядит примерно так: NTSTATUS AddDevice(PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT pdo) { Return STATUS_SOMETHING; //Например, STATUS_SUCCESS } Аргумент DriverObject указывает на объект драйвера, инициализированный функцией DriverEntry. Аргумент pdo содержит адрес объекта физического устройства в нижней части стека. Основные действия, выполняемые функцией AddDevice: − Вызов IoCreateDevice для создания объекта устройства и экземпляра объекта расширения устройства. − Регистрация одного или нескольких интерфейсов устройства для связи с приложениями. Другой способ связи с приложениями – присвоение имени объекту и создание символической ссылки. − Инициализация объекта расширения устройства и поля Flags объекта устройства. − Вызов функции IoAttachDeviceToDeviceStack для включения нового объекта в стек. 2.6 Создание объекта устройства Для создания объекта устройства вызывается функция IoCreateDevice. Пример такого вызова приведен ниже: 33
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »