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

UptoLike

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

41
Поле CancelIrql (KIRQL тип целого числа, содержащего значение IRQL)
содержит уровень запроса прерывания (IRQL), на котором была захвачена спин-
блокировка отмены.
Поле CancelRoutine (PDRIVER_CANCEL) содержит адрес функции
отмены IRP данного драйвера.
Поле UserBuffer (PVOID) содержит виртуальный адрес пользовательского
режима для выходного буфера запроса IRP_MJ_DEVICE_CONTROL, если для
него задан
режим METHOD_NEITHER.
Поле Taile содержит объединение полей (рисунок 3.2).
Поле Taile.Overlay таже содержит объединение альтернатив:
Taile.Overlay.DeviceQueueEntry (KDEVICE_QUEUE_ENTRY) и
Taile.Overlay.DriverContext (PVOID[4]).
Диспетчер ввода-вывода использует поле Taile.Overlay.DeviceQueueEntry
для организации стандартных очередей.
Taile.Overlay
DeviceQueueEntry
DriverContext
Tail.Apc
TailCompletionKey
Thread
AuxiliaryBuffer
ListEntry
CurrentStackLocation PacketType
OriginalFileObject
Рисунок 3.2 – Объединение Tail в IRP
Последний элемент массива Taile.Overlay.DriverContext используют
функции IoCsqXxx (функции отмены безопасной очереди). Если драйвер является
     Поле CancelIrql (KIRQL – тип целого числа, содержащего значение IRQL)
содержит уровень запроса прерывания (IRQL), на котором была захвачена спин-
блокировка отмены.
     Поле CancelRoutine (PDRIVER_CANCEL) содержит адрес функции
отмены IRP данного драйвера.
     Поле UserBuffer (PVOID) содержит виртуальный адрес пользовательского
режима для выходного буфера запроса IRP_MJ_DEVICE_CONTROL, если для
него задан режим METHOD_NEITHER.
     Поле Taile содержит объединение полей (рисунок 3.2).
     Поле Taile.Overlay таже содержит объединение альтернатив:
     Taile.Overlay.DeviceQueueEntry (KDEVICE_QUEUE_ENTRY) и
     Taile.Overlay.DriverContext (PVOID[4]).
     Диспетчер ввода-вывода использует поле Taile.Overlay.DeviceQueueEntry
для организации стандартных очередей.
              Taile.Overlay




DeviceQueueEntry                                               TailCompletionKey
                            DriverContext


                 Thread
              AuxiliaryBuffer


                ListEntry                         Tail.Apc



CurrentStackLocation         PacketType
            OriginalFileObject

                       Рисунок 3.2 – Объединение Tail в IRP
     Последний      элемент      массива    Taile.Overlay.DriverContext   используют
функции IoCsqXxx (функции отмены безопасной очереди). Если драйвер является


                                            41