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


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

Название:Работа с процессами в С/С++. Основные приемы
Просмотров:61
Раздел:Информатика, программирование
Ссылка:Скачать(8 KB)
Описание:Работа с процессами. Основные приемы. Данная статья рассказывает о работе с процессами, модулями, кучами и потоками при помощи билиотеки TOOLHELP Процессы, потоки, модули, кучи, toolhelp, tlhelp.

Университетская электронная библиотека.
www.infoliolib.info

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

Работа с процессами в С/С++. Основные приемы Тимур Хабибуллин
    Данная статья рассказывает о работе с процессами, модулями, кучами и потоками при помощи билиотеки TOOLHELP
    Работа с процессами - основа, без которой заниматься системным программированием так же бессмысленно, как без знания структуры PE-файлов или организации памяти. Поэтому я поднимаю эту тему вновь и расскажу о работе с процессами посредством функций TOOLHELP.
    Язык программирования: я выбрал C (без плюсиков, т.к. работы с классами в этой статье не будет - после прочтения вы сможете их без труда составить сами) по многим причинам и в первую очередь из-за его низкоуровнего взаимодействия с памятью...записал-считал, все просто и понятно.
    Перечислить запущенные в системе процессы можно по-разному, я привык пользоваться функциями TOOLHELP. Общая последовательность действий при работе с этой библиотекой: делаем "снимок" (Snapshot) системной информации, которая нам необходима, потом бегаем по процессам (а также модулям и кучам). Поэтому начнем с простого - перечислим все процессы.
    //Перечисление процессов
    int EnumerateProcs(void)
    {
    //создаем "снимок" информации о процессах
    //первый параметр функции - константа, определяющая,
    //какую информацию нам нужно "снять", а второй -
    //идентификатор процесса, к которому относится эта
    //информация. В данном случае это 0 т.к. мы делаем
    //снимок всех процессов
    HANDLE pSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    bool bIsok = false;
    //Структура, в которую будут записаны данные процесса
    PROCESSENTRY32 ProcEntry;
    //установим ее размер, это необходимое действие
    ProcEntry.dwSize = sizeof(ProcEntry);
    //теперь определим первый процесс
    //первый параметр функции - хэндл "снимка" информации
    //второй - адрес структуры PROCESSENTRY32
    //true - в случае удачи, false - в случае неудачи
    bIsok = Process32First(pSnap, &ProcEntry);
    //здесь можно было вставить роскошный цикл for(....) но это
    //не совсем удобочитаемо
    //так что цикл while
    while(bIsok)
    {
    //печатаем имя процесса, его идентификатор
    //теперь, когда у нас есть структура ProcEntry
    //То, какую информацию вы из нее возьмете, зависит
    //только от задачи ))
    printf("%s %un", ProcEntry.szExeFile, ProcEntry.th32ProcessID);
    bIsok = Process32Next(pSnap, &ProcEntry);
    }
    //чистим память!
    CloseHandle(pSnap);
    return 1;
    }
    Вуаля, список всех процессов, аки в диспетчере задач. Теперь мы сделаем кое-что, чего в диспетчере нет! В адресном пространстве каждого процесса (в области памяти, выделенной ему системой) находятся различные библиотеки, которые, собственно, состовляют ПРИЛОЖЕНИЕ. Это и Kernel32 и GDI и еще множество различных. Наша задача - их все пересчитать и переписать! Для этого действа напишем небольшую функцию.
    //Перечисление модулей процесса
    int EnumerateModules(DWORD PID)
    {
    //Входной параметр - идентификатор процесса, чьи модули мы собираемся
    //перечислять. Во первых создадим snapshot информации о модулях
    //теперь нам нужна информация о конкретном процессе - процессе
    //с идентификатором PID
    HANDLE pMdlSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PID);
    bool bIsok = false;
    //структура с информацией о модуле
    MODULEENTRY32 MdlEntry;
    //зададим размер
    MdlEntry.dwSize = sizeof(MODULEENTRY32);
    //и найдем первый модуль
    bIsok = Module32First(pMdlSnap, &MdlEntry);
    //и далее, как и с процессами
    while(bIsok)
    {
    //печатаем имя модуля
    printf(" %s n", MdlEntry.szModule);
    //и переходим к следующему
    bIsok = Module32Next(pMdlSnap, &MdlEntry);
    }
    //чистим память!
    CloseHandle(pMdlSnap);
    return 1;
    }
    А теперь немного притормозим и посмотрим, какую еще информацию о процессах и модулях мы получаем:
    typedef struct tagPROCESSENTRY32 {
    DWORD dwSize; //Рамер структуры
    DWORD cntUsage; //Число ссылк на процесс. ............




Нет комментариев.



Оставить комментарий:

Ваше Имя:
Email:
Антибот:  
Ваш комментарий:  



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

Название:Роль и место Беларуси в процессах общественно-исторического развития
Просмотров:59
Описание: Роль и место Беларуси в процессах общественно-исторического развития     СОДЕРЖАНИЕ   1. Роль и место Беларуси в процессах общественно-исторического развития 1.1 Беларусь в восточнославянском ми

Название:Анализ процессуальных прав и обязанностей лиц в гражданском судопроизводстве
Просмотров:59
Описание: Содержание Введение Глава I. Понятие о лицах, участвующих в деле 1.1 Лица, участвующие в деле, их заинтересованность 1.2 Гражданская процессуальная правоспособность и дееспособность Глава II. Стороны гражд

Название:Процесс создания и функционирования общественных объединений
Просмотров:50
Описание: Оглавление Введение 1.  Создание общественного объединения 2.  Государственная регистрация 3.  Организационные структуры 4.  Членство 5.  Действия после регистрации 6.  Изменение учр

Название:Процесс правового регулирования конфликтов в социально-трудовой сфере
Просмотров:53
Описание: Содержание:   Введение 1.      Конфликты в социально-трудовой сфере в современной России 1.1    Социально-трудовые отношения как источник конфликтов 1.2    Исторический экскурс 1.3    Основная классифи

Название:Ходатайства и обжалования в уголовно-процессуальном законодательстве
Просмотров:67
Описание: План Введение § 1. Сущность и роль ходатайств и жалоб в уголовном процессе § 2. Особенности заявления и рассмотрения ходатайств в уголовном судопроизводстве § 3. Особенности подачи и рассмотрения жалоб в у

 
     

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