Які дзвінки відкладених процедур?

Зміст:

Anonim

Відкладений виклик процедури (DPC) - це механізм обробки переривань в операційній системі Microsoft Windows, на який драйвери можуть посилатися під час запуску певних процесів. DPC дозволяє активувати, але не виконувати завдання з рівня високозаданих запитів на переривання (IRQL). Це дозволяє водієві швидко обробляти процедуру обслуговування викидів високого рівня (ISR), відкладаючи виконання кодів IRQL нижнього рівня. Драйвери використовують DPC для планування операцій введення / виводу (I / O). Драйвери - це програмне забезпечення, яке використовує Windows для зв'язку з апаратними пристроями.

Трансфери

Драйвер пристрою режиму ядра звичайно обробляє передачу потоку аудіо- або відеоданих з або до зовнішнього пристрою. Обробка даних драйверів пристроїв здійснюється за допомогою переривання. Зовнішнє апаратне забезпечення зазвичай генерує переривання для запиту драйвера пристрою для передачі наступного пакету даних. Драйвер пристрою не може обробляти дані миттєво у своїй програмі переривання; таким чином, операційна система повинна ініціювати процедуру зворотного виклику, яка є ЦОД. Режими роботи ядра, системного режиму та режиму користувача - це режими роботи вашого центрального процесора. Ядро керує всіма процесами обробки системи.

Планування

Концепція відкладеного виклику процедури існує тільки в режимі ядра. Операційна система зберігає DPC, заплановані драйверами пристроїв, в черзі. Якщо вашій системі необхідно обробити переривання, ядро ​​перевіряє чергу DPC і виконує перший DPC, якщо немає переривань і не запускаються процеси DPC. DPC - це найвищий пріоритетний потік в системі, оскільки обробка черги DPC відбувається до того, як диспетчер вибере потік і призначить це процесору. DPC мають три рівні пріоритету: низький, середній і високий.

Процеси

Кожен DPC пов'язаний з одним системним об'єктом DPC. Коли драйвер реєструє процедуру DPCForslr, система ініціалізує раніше визначений об'єкт DPC. Якщо потрібно більше одного DPC, драйвер створює додаткові об'єкти DPC, відомі як підпрограми CustomDPC. Підпрограма DPCForlsr обробляє кілька процесів; вона завершує операцію вводу-виводу, описану пакетами запитів вводу / виводу (IRP), деказує наступний IRP, встановлює стан вводу / виводу в прийнятому IRP і процес для завершення запиту.

Підпрограми

Як правило, драйвер пристрою, який має процедуру обслуговування переривань, має, щонайменше, одну процедуру DPCForIsr або CustomDPC, щоб завершити обробку операцій, керованих перериваннями. Відповідно до Open Systems Resources, Inc., фундаментальна причина того, що драйвер має єдину процедуру DPCForlsr, набір процедур CustomDPC або обидва залежить від характеру його базового пристрою та набору запитів введення / виводу, які він повинен підтримувати. ISR драйвера повинен викликати IoRequestDPC для операцій вводу-виводу, керованих перериваннями, використовуючи підпрограми DPCForlsr. І навпаки, для перекритих операцій, керованих перериваннями операцій вводу-виводу з використанням процедур CustomDPC, ISR необхідно викликати KeInsertQueueDPC.