Автор: Олег Иванов, 28 Сентября 2010 в 11:30, курсовая работа
1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ
1.1 Общие сведения
Наименование системы
Система диспетчеризации процессов.
Плановые сроки начала и окончания работы
Разработка данной системы была начата 20.02.2008 г.
Завершение разработки планируется на 25.04.2008 г.
Порядок оформления работы
1. Обоснование необходимости разработки программы
Постановка задачи.
Сбор исходных материалов.
Выбор и обоснование критериев эффективности и качества разрабатываемой программы.
2. Научно-исследовательские работы
Определение структуры входных и выходных данных.
Предварительный выбор методов решения задач.
Обоснование целесообразности применения ранее разработанных программ.
Определение требований к техническим средствам.
Обоснование принципиальной возможности решения поставленной задачи.
3. Разработка и утверждение технического задания
Определение требований к программе.
Разработка технико-экономического обоснования разработки программы.
Определение стадий, этапов и сроков разработки программы и документации на нее.
Выбор языков программирования.
Согласование и утверждение технического задания.
1.2. Назначение и цели создания системы
1.2.1. Назначение системы
Программный продукт предназначен для отображения списка процессов системы, получения дополнительной информации о процессах и работы с ними.
1.2.2 .Цели создания системы
Программный продукт предназначен для отображения списка запущенных процессов. Программа должна включать в себя средства по завершению процесса, установке приоритета процесса, выключению, перезагрузке и смене профиля компьютера.
1.3. Характеристики объектов систематизации
1.3.1. Краткие сведения об объекте автоматизации
Объектом автоматизации является представление списка процессов, запущенных в системе, в виде удобном для восприятия пользователем и реализация операций над ними.
1.3.2. Сведения об условиях эксплуатации
Данная система проектируется лишь в учебных целях, вследствие чего будет эксплуатироваться узким кругом лиц на домашних персональных компьютерах.
1.4. Требования к системе
Функция LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam). Это оконная функция, обрабатывающая сообщения основного окна программы. Осуществляется обработка следующих сообщений:
Функция int ListProcesses(HWND hwnd); - осуществляет получение списка процессов системы и обновление информации о процессах в ListBox.
Функция int ProcessesInfo(HWND hwnd,DWORD, dwProcessID); - получает информацию о процессе и о используемых ими модулях, и обновляет информацию в соответствующих ListBox
Функция void Terminate(DWORD ID); - предназначена завершения выбранного процесса.
Функция void KillProcess(DWORD ID); - предназначена для завершения процесса с идентификатором ID, без проверки уровня привилегий.
Функция void SetListPrioryties(HWND hwnd); - предназначена для заполнения ListBox списком приоритетов.
Функция inline BOOL GetDebugPriority(void); - предназначена для получение приоритета для работы с процессами.
Функция BOOL SetCurrentPrivilege( LPCTSTR Privilege, BOOL bEnablePrivilege ); - предназначена для установки уровня привилегий поцессу.
Функция HWND CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, hInstance, LPVOID lpParam);- используется для создания дочерних окон управления
Функция LRESULT SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);- используется для передачи сообщений дочерним окнам управления.
Функция HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT);- используется для подготовки главного окна приложения к началу прорисовки изображения.
Функция BOOL TextOut(HDC hdc, int nXStart, starting position, int nYStart, lpString, int cbString);- используется для вывода текста в главное окно приложения.
Функция char *_itoa(int value, char *str, int radix); - используется для преобразования числа в символьного выражения для вывода его в Edit.
Функция int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType); - предназначена для создания она с сообщением.
Функция BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReason);- используется для выключения, перезагрузки и смены профиля компьютера в зависимости от входных параметров.
Функция LRESULT DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); - используется для обработки любого сообщения Windows, которое не обрабатывает приложение
Функция BOOL GetModules(HWND hwndListView,DWORD ID); - предназначена для получения списка модулей, используемых процессом с идентификатором ID.
Функция HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID) – возвращает моментальный снимок процессов, модулей или кучи, в зависимости от флага dwFlags.
Входные параметры:
DWORD dwFlags – определяет тип моментального снимка;
DWORD
th32ProcessID – необходим только в случае создания
снимка модулей или снимка кучи, указывает
идентификатор процесса, для которого
будет создаваться моментальный снимок;
Функция BOOL WINAPI Process32First (HANDLE hSnapshot,LPPROCESSENTRY32 lppe) – возвращает TRUE, в случае успеха получения информации о первом процессе из снимка процессов и FALSE в обратном случае. Заполняет структуру lppe необходимой информацией о первом процессе из снимка, сделанного функцией CreateToolhelp32Snapshot.
Входной параметр:
HANDLE hSnapshot– моментальный снимок, созданный функцией CreateToolhelp32Snapshot с флагом dwFlags установленным в TH32CS_SNAPPROCESS;
Выходной параметр:
LPPROCESSENTRY32
lppe – указатель на структуру, содержащую
базовую информацию о процессе;
Функция BOOL WINAPI Process32Next (HANDLE hSnapshot,LPPROCESSENTRY32
lppe) – возвращает
TRUE, в случае если список процессов, созданный
снимком ещё не окончен и FALSE в обратном
случае. Заполняет структуру lppe необходимой
информацией о процессе.
Входной параметр:
HANDLE hSnapshot– моментальный снимок, созданный функцией CreateToolhelp32Snapshot с флагом dwFlags установленным в TH32CS_SNAPPROCESS;
Выходной параметр:
LPPROCESSENTRY32
lppe – указатель на структуру, содержащую
базовую информацию о процессе;
Функция BOOL GetProcessMemoryInfo (HANDLE Process, PPROCESS_MEMORY_COUNTERS ppsmemCounters, DWORD cb) – получает информацию о памяти, используемой процессом, возвращает TRUE, если запрос прошел успешно и FALSE в обратном случае
Входные параметры:
HANDLE Process – дескриптор процесса, полученный с помощью функции OpenProcess, у которой входной параметр, отвечающий за флаг доступа к процессу, установлен в значение PROCESS_QUERY_INFORMATION;
DWORD cb – размер структуры PROCESS_MEMORY_COUNTERS;
Выходной параметр:
PPROCESS_MEMORY_COUNTERS
ppsmemCounters– указатель на структуру, содержащую
базовую информацию о памяти, используемой
процессом с дескриптором Process;
Функция HANDLE OpenProcess (DWORD dwDesiredAccess,BOOL bInheritHandle,DWORD dwProcessId) – возвращает дескриптор процесса
Входные параметры:
DWORD dwDesiredAccess – флаг доступа к процессу, определяет тип операции, которую потом можно производить с процессом;
BOOL bInheritHandle – определяет, может ли данный дескриптор быть унаследован, в данной задаче должен быть установлен в FALSE;
DWORD
dwProcessId – идентификатор процесса для определения
его дескриптора;
Функция BOOL TerminateProcess (HANDLE hProcess, UINT uExitCode) – завершает процесс, определенный дескриптором hProcess
Входные параметры:
HANDLE hProcess – дескриптор процесса, полученный с помощью функции OpenProcess, у которой входной параметр, отвечающий за флаг доступа к процессу, установлен в значение PROCESS_TERMINATE;
UINT
uExitCode – определяет код выхода для процесса
и всех потоков, запущенных процессом;
Функция BOOL WINAPI Module32First (HANDLE hSnapshot, LPMODULEENTRY32 lpme) – возвращает TRUE, в случае успеха получения информации о первом модуле процесса и FALSE в обратном случае. Заполняет структуру lpme необходимой информацией о первом модуле процесса из снимка, сделанного функцией CreateToolhelp32Snapshot, вызванной с флагом dwFlags, равным TH32CS_SNAPMODULE
Входной параметр:
HANDLE hSnapshot– моментальный снимок, созданный функцией CreateToolhelp32Snapshot с флагом dwFlags установленным в TH32CS_SNAPMODULE;
Выходной параметр:
LPMODULEENTRY32
lpme – указатель на структуру, содержащую
базовую информацию о первом модуле процесса;
Функция BOOL WINAPI Module32Next (HANDLE hSnapshot, LPMODULEENTRY32 lpme) – возвращает TRUE, в случае успеха получения информации о модуле процесса и FALSE в обратном случае. Заполняет структуру lpme необходимой информацией модуле процесса из снимка, сделанного функцией CreateToolhelp32Snapshot, вызванной с флагом dwFlags, равным TH32CS_SNAPMODULE.
Входной параметр:
HANDLE hSnapshot– моментальный снимок, созданный функцией CreateToolhelp32Snapshot с флагом dwFlags установленным в TH32CS_SNAPMODULE;
Выходной параметр:
LPMODULEENTRY32
lpme – указатель на структуру, содержащую
базовую информацию о первом модуле процесса;
Функция DWORD GetPriorityClass (HANDLE hProcess)– возвращает приоритет процесса, заданного дескриптором hProcess
Входной параметр:
HANDLE
hProcess – дескриптор процесса, полученный
с помощью функции OpenProcess, у которой входной
параметр, отвечающий за флаг доступа
к процессу, установлен в значение PROCESS_QUERY_INFORMATION;
Функция BOOL SetPriorityClass (HANDLE hProcess, , DWORD dwPriorityClass)– возвращает TRUE, если приоритет процесса hProcess был установлен, и FALSE в обратном случае.
Входные параметры:
HANDLE hProcess – дескриптор процесса, полученный с помощью функции OpenProcess, у которой входной параметр, отвечающий за флаг доступа к процессу, установлен в значение PROCESS_SET_INFORMATION;
DWORD dwPriorityClass – задает класс приоритета для процесса и в общем случае может принимать следующие значения:
а) REALTIME_PRIORITY_CLASS – класс самых высоких приоритетов процессов. Все потоки, запущенные процессом с данным уровнем приоритета вытесняют все потоки других процессов, в том числе и процессов системы;
б) HIGH_PRIORITY_CLASS – класс высоких приоритетов процессов. Потоки процесса с данным уровнем приоритета вытесняют потоки процессов с нормальным и самым низким уровнем приоритета;