MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Перехват методов интерфейса Iunknown

Название:Перехват методов интерфейса Iunknown
Просмотров:90
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание:Немного теории. Принцип перехвата. Реализация перехвата. Полезная нагрузка. Использование.

Часть полного текста документа:

Перехват методов интерфейса IUnknown Алексей Остапенко Введение
    В этой статье рассматривается технология, позволяющая перехватывать вызовы методов интерфейса IUnknown COM-объекта. Кроме исследовательских целей, эта технология может иметь и практическое применение. Она позволяет осуществлять такие полезные действия, как почти прозрачная подмена контекста пользователя, "под которым" производятся вызовы методов удаленного объекта, "агрегирование" удаленных объектов, агрегирование объектов, не поддерживающих агрегацию и т.п. С исследовательской точки зрения перехват вызовов IUnknown позволяет заглянуть во внутренности взаимодействия приложения и используемых им COM-объектов. Например, отлаживая приведенный в статье пример, я обнаружил, что вызов функции CreateObject скриптового рантайма приводит к запросу четырех (!) интерфейсов вместо одного у создаваемого объекта. :) Немного теории
    Интерфейс IUnknown является основополагающим элементом COM. Он имеет 3 метода, управляющих доступом к другим интерфейсам объекта:
    QueryInterface.
    AddRef.
    Release.
    Перехватив вызовы методов IUnknown, можно управлять набором интерфейсов, предоставляемых объектом "наружу" (например, можно спрятать некоторые из них или добавить свои интерфейсы, сделав вид, что они тоже предоставляются объектом), а также управлять некоторыми параметрами вызова методов интерфейсов (например, proxy blanket'ом). Любой другой интерфейс, наследуемый от IUnknown, соответственно, наследует и эти три метода.
    Работа с любым интерфейсом осуществляется через указатель на этот интерфейс. Физически указатель на интерфейс - это указатель на переменную, которая, в свою очередь, указывает на таблицу указателей на методы этого интерфейса (VTBL, см. рисунок 1).
    
    Рисунок 1.
    Несколько интерфейсов могут ссылаться как на одну и ту же VTBL, так и на разные - для клиента это не имеет значения. Кроме того, физически разные экземпляры COM-класса имеют разные указатели на интерфейсы (так как из них при вызове выводится this, см. ниже), но могут иметь (а объекты, реализованные с помощью ATL - имеют) одни и те же VTBL.
    Интерфейс может использоваться клиентом напрямую, если COM-объект создавался внутри процесса (in-proc) клиента и в том же апартаменте (apartment), из которого происходит вызов. В противном случае (внепроцессный (out-of-proc) объект или другой апартамент) клиент вместо реального интерфейса будет использовать его прокси. Однако в обоих случаях указатель на интерфейс ссылается на указатель на VTBL, содержащую указатели на методы. Таким образом, в обоих случаях VTBL интерфейса (или его прокси) напрямую доступна в процессе клиента для чтения, и может быть сделана доступной для записи.
    ПРИМЕЧАНИЕ
    Компилятор C++ может разместить VTBL в константном сегменте данных, который может быть загружен в страницу памяти с атрибутами защиты "только для чтения" (PAGE_READONLY) (за это замечание отдельное спасибо Николаю Меркину и Алексею Ширшову). В этом случае просто так писать в VTBL не получится. Но, поскольку VTBL находится в адресном пространстве процесса, можно поменять атрибуты защиты страницы на "для чтения и записи" (PAGE_READWRITE) с помощью функции VirtualProtect. Кроме этих кратких сведений об устройстве указателей на интерфейс нам понадобится понимание того, как именно происходит вызов и передача параметров в метод интерфейса, реализованного как метод C++ класса, унаследованного от интерфейса:
    Клиент вызывает метод QueryInterface:
    pUnknown->QueryInterface(IID_IDispatch, reinterpret_cast(&pDispatch)); Этот вызов транслируется примерно в такой:
    ((VTBL*)pUnknown)->vtbl->QueryInterface(pUnknown, IID_IDispatch,
    reinterpret_cast(&pDispatch)); т.е. ............






Похожие работы:

Название:Интерфейс Windows
Просмотров:601
Описание: Windows — компьютерная операционная система фирмы Microsoft Corp. Существует в ряде вариантов, один из которых выбирают в зависимости от целей пользователя. После того как операционная система Windows будет загружена в норма

Название:Microsoft Agent – графические персонажи для интерфейсов
Просмотров:517
Описание: ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ СТАРООСКОЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ (ФИЛИАЛ) ГОСУДАРСТВЕННОГО ОБРАЗОВАТЕЛЬНОГО УЧЕРЕЖДЕНИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «МОСКОВСКИЙ ГОСУДАРСТВЕНН

Название:Разработка электрической структурной, функциональной, принципиальной схем учебного комплекса по интерфейсам ввода-вывода
Просмотров:269
Описание: Военный научно – учебный центр Сухопутных войск «ОВА ВС РФ»   Кафедра № 31ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовому проекту Разработка электрической структурной, функциональной, принципиальной схем учебног

Название:Разработка Windows–интерфейса доступа к удаленным источникам данных в среде Visual Studio C++/C# на примере БД "Продажа продукции "AVON"
Просмотров:271
Описание: МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ ФГОУВПО Башкирский государственный аграрный университет Факультет: информационных технологий и управления Кафедра Информатики и Информационных те

Название:Программируемый периферийный интерфейс. Генерация звука с запретом и без запрета прерываний
Просмотров:160
Описание: Министерство образования и науки Российской федерацииФедеральное Агентство по образованиюГОУ ВПО Московский Государственный Открытый университетЧебоксарский институт (филиал)       Кафедра инфо

 
     

Вечно с вами © MaterStudiorum.ru