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

UptoLike

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

13
Еще одно отличие драйвера от любого приложения заключается в том, что
система не создает специального потока для выполнения кода драйвера. Функции
драйвера выполняются в контексте того потока, который был активен в момент
вызова системой функции. В этом случае говорят, выполнение функций драйвера
происходит в контексте произвольного потока.
Однако, следует иметь
в виду, что такое происходит не всегда. Драйвер
может создавать собственные системные потоки, вызывая функцию
PsCreateSystemThread.
Произвольность контекста программного потока определяет две
особенности драйверов:
драйвер не может блокировать произвольные потоки, так как это может
привести к непредсказуемым последствиям,
в произвольном потоке драйвер может создавать только асинхронные
пакеты IRP,
так как синхронные пакеты автоматически отменяются в
случае завершения потока, в контексте которого они созданы.
1.4 Иерархия устройств и драйверов
Прежде, чем рассматривать процессы функционирования и взаимодействия
драйверов, следует рассмотреть иерархию устройств и драйверов, лежащую в
основе этого взаимодействия. Концепция подобной иерархии достаточно
наглядно представлена на рисунке 1.5 [3].
Рисунок 1.5 – Иерархия объектов устройств и драйверов в модели WDM
     Еще одно отличие драйвера от любого приложения заключается в том, что
система не создает специального потока для выполнения кода драйвера. Функции
драйвера выполняются в контексте того потока, который был активен в момент
вызова системой функции. В этом случае говорят, выполнение функций драйвера
происходит в контексте произвольного потока.
     Однако, следует иметь в виду, что такое происходит не всегда. Драйвер
может    создавать   собственные     системные   потоки,   вызывая    функцию
PsCreateSystemThread.
     Произвольность      контекста   программного   потока   определяет   две
особенности драйверов:
     − драйвер не может блокировать произвольные потоки, так как это может
        привести к непредсказуемым последствиям,
     − в произвольном потоке драйвер может создавать только асинхронные
        пакеты IRP, так как синхронные пакеты автоматически отменяются в
        случае завершения потока, в контексте которого они созданы.


     1.4 Иерархия устройств и драйверов
     Прежде, чем рассматривать процессы функционирования и взаимодействия
драйверов, следует рассмотреть иерархию устройств и драйверов, лежащую в
основе этого взаимодействия. Концепция подобной иерархии достаточно
наглядно представлена на рисунке 1.5 [3].




    Рисунок 1.5 – Иерархия объектов устройств и драйверов в модели WDM

                                       13