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

UptoLike

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

27
Поле DriverObject (PDRIVER_OBJECT) указывает на объект драйвера,
связанный с этим устройством. Обычно это тот драйвер, который и создал данный
объект устройства вызовом функции IoCreateDevice.
Поле NextDevice (PDEVICE_OBJECT) указывает на следующий объект
устройства, принадлежащий тому же драйверу, что и данный объект. Это поле
объединяет объекты устройств драйвера в связный список, начинающийся с
объекта
, указанного в поле DeviceObject объекта драйвера.
Type Size
ReferenceCount
DriverObject
NextDevice
AttachedDevice
CurrentIrp
Timer
Flags
Characteristics
DeviceExtension
DeviceType
StackSize
AlignmentRequirement
Рисунок 2.2 – Структура данных DeviceObject
Поле
CurrentIrp (PIRP) регистрирует последний пакет IRP, отправленный
функции StartIo. Это поле необходимо в том случае, если используются функции
StartPaket и StartNextPaket для работы с очередями IRP.
Поле Flags (ULONG) содержит набор битовых флагов (таблица 2.2).
     Поле DriverObject (PDRIVER_OBJECT) указывает на объект драйвера,
связанный с этим устройством. Обычно это тот драйвер, который и создал данный
объект устройства вызовом функции IoCreateDevice.
     Поле NextDevice (PDEVICE_OBJECT) указывает на следующий объект
устройства, принадлежащий тому же драйверу, что и данный объект. Это поле
объединяет объекты устройств драйвера в связный список, начинающийся        с
объекта, указанного в поле DeviceObject объекта драйвера.
                          Type             Size
                            ReferenceCount
                              DriverObject
                               NextDevice
                            AttachedDevice
                               CurrentIrp
                                 Timer
                                  Flags
                             Characteristics

                            DeviceExtension
                               DeviceType
                        StackSize
                                   …

                        AlignmentRequirement
                                 …

                Рисунок 2.2 – Структура данных DeviceObject
     Поле CurrentIrp (PIRP) регистрирует последний пакет IRP, отправленный
функции StartIo. Это поле необходимо в том случае, если используются функции
StartPaket и StartNextPaket для работы с очередями IRP.
     Поле Flags (ULONG) содержит набор битовых флагов (таблица 2.2).




                                       27