Организация ввода-вывода. Драйверы WDM. Рощин А.В. - 36 стр.

UptoLike

Составители: 

36
DEVSTATE devstate; //7
DEVSTATE prevstate;
DEVICE_POWER_STATE devpower;
SYSTEM_POWER_STATE syspower;
DEVICE_CAPABILITIES devcaps; //8
} DEVICE_EXTENSION, *DEVICE_EXTENSION;
Здесь (1), как и ранее приведено такое объявление структуры, которое
используется в DDK. То есть, расширение устройства определено, как структура с
именем DEVICE_EXTENSION, типом указателя PDEVICE_EXTENSION и
тэгом _DEVICE_EXTENSION.
Как уже было сказано, на структуру расширения устройства указывает
содержимое поля DeviceExtension в объекте устройства (2). Однако часто бывает
необходимо найти объект устройства по
структуре расширения устройства,
которая подробно описывает конкретный его экземпляр. Именно для этого в
расширение устройства включается указатель DeviceObject.
Поле LowerDeviceObject (3) служит для сохранения адреса нижележащего
объекта устройства. Необходимость в этом возникает при вызове функции
IoAttachDeviceToDeviceStack.
Поле Pdo (4) содержит адрес объекта устройства, который бывает
необходим некоторым служебным функциям.
Поле ifname служит для
хранения имени интерфейса устройства (типа
UNICODE_STRING), необходимое для обращению к устройству.
В поле (6) определяется объект блокировки устройства
IO_REMOVE_LOCK, используемый для безопасного отключения устройства.
Инициализацией этого объекта занимается функция AddDevice.
В поле (7) включены переменные для отслеживания текущего состояния
Plug and Play и энергопотребления устройства. Предполагается, что тип
DEVSTATE уже где-то объявлен.
Поле (8) связано
с дополнительными возможностями управления питанием.
2.8. Вопросы для самопроверки
     DEVSTATE devstate;                     //7
     DEVSTATE prevstate;
     DEVICE_POWER_STATE devpower;
     SYSTEM_POWER_STATE syspower;
     DEVICE_CAPABILITIES devcaps;           //8
     …
     } DEVICE_EXTENSION, *DEVICE_EXTENSION;
     Здесь (1), как и ранее приведено такое объявление структуры, которое
используется в DDK. То есть, расширение устройства определено, как структура с
именем DEVICE_EXTENSION, типом указателя PDEVICE_EXTENSION и
тэгом _DEVICE_EXTENSION.
     Как уже было сказано, на структуру расширения устройства указывает
содержимое поля DeviceExtension в объекте устройства (2). Однако часто бывает
необходимо найти объект устройства по структуре расширения устройства,
которая подробно описывает конкретный его экземпляр. Именно для этого в
расширение устройства включается указатель DeviceObject.
     Поле LowerDeviceObject (3) служит для сохранения адреса нижележащего
объекта устройства. Необходимость в этом возникает при вызове функции
IoAttachDeviceToDeviceStack.
     Поле Pdo (4) содержит адрес объекта устройства, который бывает
необходим некоторым служебным функциям.
     Поле ifname служит для хранения имени интерфейса устройства (типа
UNICODE_STRING), необходимое для обращению к устройству.
     В    поле     (6)   определяется     объект    блокировки     устройства
IO_REMOVE_LOCK, используемый для безопасного отключения устройства.
Инициализацией этого объекта занимается функция AddDevice.
     В поле (7) включены переменные для отслеживания текущего состояния
Plug and Play и энергопотребления устройства. Предполагается, что тип
DEVSTATE уже где-то объявлен.
     Поле (8) связано с дополнительными возможностями управления питанием.


     2.8. Вопросы для самопроверки
                                     36