МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||
Структура драйвера пристроюРозглянемо структуру драйвера пристрою . Вона багато в чому подібна до структури, прийнятої в Linux. Можна виділити основні процедури драйвера. · Процедура ініціалізації. Звичайно називається DriverEntry, її виконує менеджер введення-виведення під час завантаження драйвера у систему, і зазвичай вона здійснює глобальну ініціалізацію структур даних драйвера. · Процедура додавання пристрою (add-device routine). Вона має бути реалізована будь-яким драйвером, що підтримує специфікацію Plug and Play. Менеджер Plug and Play викликає цю процедуру, якщо знаходить пристрій, за який відповідає драйвер. У ній звичайно створюють структуру даних, відображувану пристроєм (об'єкт пристрою). · Набір процедур диспетчеризації (dispatch routines), аналогічних функціям файлових операцій у Linux. Ці процедури реалізують дії, допустимі для пристрою (відкриття, закриття, читання, записування тощо). Саме їх викликає менеджер введення-виведення під час виконання запиту. · Процедура обробки переривання (interrupt service routine, ISR) аналогічна коду верхньої половини оброблювача переривання для Linux. Вона є оброблювачем переривання від пристрою, виконується із високим пріоритетом; основне її завдання - запланувати для виконання нижню половину оброблювача (DPC-процедуру). · Процедура відкладеної обробки переривання, DPC-процедура (DPC routine), відповідає коду нижньої половини оброблювача переривання в Linux. Вона виконує більшу частину роботи, пов'язаної з обробкою переривання, після чого сигналізує про необхідність переходу до коду завершення введення-виведення. Особливості виклику цих процедур під час виконання операції введення-виведення наведено нижче.
5. У Windows ХР на внутрішньому рівні всі операції введення-виведення, відображені пакетами IRP, є асинхронними. Будь-яку операцію синхронного введення-виведення відображають у вигляді сукупності асинхронної операції й операції очікування. Обробка запиту синхронного введення-виведення до однорівневого драйвера зводиться до такого: 1. Запит введення-виведення перехоплює динамічна бібліотека підсистеми (наприклад, підсистема Win32 перехоплює виклик функції WriteFile9 ( )). 2. Динамічна бібліотека підсистеми викликає внутрішню функцію NtWriteFilе( ), що звертається до менеджера введення-виведення. 3. Менеджер введення-виведення розмішує у пам'яті пакет IRP, що описує запит, і відсилає його відповідному драйверу пристрою викликом функції IoCallDriver ( ). 4. Подальші кроки аналогічні до описаних для Linux. 5. Драйвер витягає дані із пакета IRP, передає їх контролеру пристрою і дає йому команду почати введення-виведення. 6. Драйвер викликає функцію очікування, поточний потік при цьому призупиняють. Для асинхронного введення-виведення цей етап не виконують. 7. Коли пристрій завершує операцію, контролер генерує переривання, яке обслуговує драйвер. 8. Драйвер викликає функцію IoCompleteRequest( ) для тoгo щоб повідомити менеджерові введення-виведення про завершення ним обробки запиту, заданого пакетом IRP, після чого виконують код завершення операції. На двох останніх етапах зупинимося окремо. Читайте також:
|
||||||||
|