uawikipc.ru

Методи об`єкта windows

Атрибут методи, містить набір внутрішніх процедур, аналогічних конструкторам і деструктори C ++, тобто процедурам, які автоматично викликаються при створенні або об`єкт рухається у зворотному.

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

Коли компонент виконує системи створює новий об`єкт типу, він за допомогою диспетчера об`єктів може зареєструвати один або кілька методів. Після цього диспетчер об`єктів викликає методи в цілком певні моменти життєдіяльності об`єктів даного типу, зазвичай при створенні об`єкта, його видаленні або якому-небудь зміні. Методи, підтримувані диспетчером об`єктів, перераховані в таблиці.

Причиною звернення до цих методів об`єктів служить факт тієї чи іншої операції над об`єктом (закриття, дублювання, зміну рівня безпеки і т. Д.). Повний узагальнення цих типових процедур потребує від розробників диспетчера об`єктів передбачення всіх типів об`єктів.

Але процедури для створення об`єкта типу експортуються ядром, дозволяючи зовнішнім компонентів ядра створювати свої власні типи об`єктів. Хоча ця функція не фігурує в документації для розробників драйверів, вона використовується усередині системи компонентом Win32k.sys для визначення об`єктів WindowStation і Desktop. Завдяки можливості розширення методів об`єктів Win32k.sys визначає свої процедури для проведення таких операцій, як створення і запит.

Єдиним винятком з цього правила є процедура безпеки, яка, якщо не вказано інше, виконує за замовчуванням SeDefaultObjectMethod. Цією процедурою не потрібно знати внутрішню структуру об`єкта, тому що вона має справу тільки з дескриптором безпеки об`єкта, а ви вже бачили, що покажчик на дескриптор безпеки зберігається в загальному заголовку об`єкта, а не всередині тіла об`єкта.



Але якщо об`єкт вимагає своєї власної додаткової перевірки безпеки, він може визначити свою власну процедуру безпеки. Ще однією причиною наявності загального методу безпеки є прагнення уникнути зайвої складності, оскільки багато об`єктів покладаються при управлінні своєю безпекою на монітор безпеки посилань (security reference monitor).

Відео: Проблема Виклику Методу Об`єкт Драйвера

Методи об`єкта.

Відео: javascript. Методи простого введення виведення

Диспетчер об`єктів викликає метод відкриття open при створенні дескриптора об`єкта, що відбувається при створенні або відкритті об`єкта. об`єкти WindowStation і Desktop надають метод open- наприклад, об`єкт типу WindowStation вимагає такий метод open, щоб Win32k.sys міг спільно використовувати частину пам`яті з процесом, який служить в якості пулу пам`яті, пов`язаного з робочим столом.

Приклад використання методу закриття close можна знайти в системі вводу-виводу. Диспетчер введення-виведення реєструє метод close для об`єкта типу «файл», а диспетчер об`єктів викликає метод close при кожному закритті дескриптора файлового об`єкта. цей метод close перевіряє, чи не володіє процес, що закриває дескриптор файлу, будь-якими незавершеними блокуваннями, що стосуються цього файлу, і якщо такі блокування є, він їх видаляє.

Перевірка наявності блокувань, пов`язаних з файлами, не є обов`язком, яку повинен або може виконувати сам диспетчер об`єктів.

Перед видаленням тимчасового об`єкта з пам`яті диспетчер об`єктів викликає метод delete, якщо такий метод був зареєстрований. Диспетчер пам`яті, наприклад, реєструє метод delete для об`єкта типу «розділ», і цей метод звільняє фізичні сторінки, що використовувалися в розділі. Він також перевіряє перед видаленням об`єкта типу «розділ» факт видалення будь-яких внутрішніх структур даних, виділених розділу диспетчером пам`яті. І, знову ж таки, диспетчер об`єктів не може впоратися з цією роботою, оскільки йому нічого не відомо про внутрішню роботу диспетчера пам`яті. Методи видалення для інших типів об`єктів виконують аналогічні функції.

метод розбору parse (Так само, як і метод запиту імені query name) Дозволяє диспетчеру об`єктів поступатися управління пошуком об`єкта похідного диспетчеру об`єктів, якщо він знайде об`єкт, існуючий за межами простору імен диспетчера об`єктів. Коли диспетчер об`єктів шукає ім`я об`єкта, він призупиняє свій пошук, коли виявляє об`єкт в шляху, який він пов`язує з методом parse. Диспетчер об`єктів викликає метод parse, передаючи йому частину від імені об`єкта, пошуком якого він займається. Крім простору імен диспетчера об`єктів в Windows є ще два простору імен: простір імен реєстру, що реалізовується диспетчером конфігурації, і простір імен файлової системи, що реалізовується диспетчером вводу-виводу за допомогою драйверів файлової системи.

Наприклад, коли процес відкриває дескриптор об`єкта Device HarddiskVolume1 docs resume.doc, диспетчер об`єктів проходить по дереву його імені до тих пір, поки не дійде до імені об`єкта пристрою HarddiskVolume1. Він бачить, що з цим об`єктом пов`язаний метод розбору parse, і викликає цей метод, передаючи йому залишок імені об`єкта, пошук якого він вів, в даному випадку це рядок docs resume.doc. метод parse для об`єктів пристроїв є процедурою введення-виведення, оскільки об`єкти типу «пристрій» визначалися диспетчером вводу-виводу і їм же реєструвався для них метод parse.

процедура parse, задається диспетчером вводу-виводу, отримує рядок імені і передає її відповідної файлової системи, яка шукає файл на диску і відкриває його.

метод безпеки security, який також використовує система введення-виведення, аналогічний методу parse. Він викликається в тому випадку, якщо потік намагається запросити або змінити інформацію безпеки, що захищає файл. Ця інформація для файлів відрізняється від такої ж інформації для інших об`єктів, оскільки інформація про безпеку зберігається в самому файлі, а не в пам`яті.

Тому для пошуку інформації про безпеку та її зчитуванні або зміні повинна бути викликана система введення-виведення.

І нарешті, метод підтвердження закриття okay-to-close використовується в якості додаткового рівня захисту від зловмисного або помилкового закриття дескрипторів, які використовуються для системних цілей. Наприклад, у кожного процесу є дескриптор на об`єкт Desktop або об`єкти, з якими у його потоку або потоків є видимі вікна.

Відповідно зі стандартною моделлю безпеки такі потоки можуть закривати свої дескриптори на їх робочі столи, оскільки у процесу є повний контроль над його власними об`єктами. За цим сценарієм потоки залишаються без пов`язаного з ними робочого столу, що є порушенням многооконной моделі. Для запобігання подібної поведінки Win32k.sys реєструє процедуру okay-to-close для об`єктів робочого столу Desktop і об`єктів WindowStation.

Поділитися в соц мережах:
Схожі
» » Методи об`єкта windows