Характеристика Win32
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
ью различных технологий и платформ, и единообразно представлять эти данные. WBEM основана на схеме общей информационной модели (Common Information Model, CIM), которая является индустриальным стандартом, управляемым Distributed Management Task Force (DMTF). WMI поставляется в составе Windows 2000, но также может быть установлен на Windows 95/98/Me и Windows NT 4.0
Поскольку WMI основана на технологии COM, это избавляет от необходимости явно загружать требуемые библиотеки, как это делалось в предыдущих примерах. Этот же факт требует инициализации библиотеки COM прежде чем будет вызвана функция перечисления процессов. В приложении, созданном с использованием MFC, это можно сделать с помощью функцииAfxOleInit, в остальных случаях следует пользоваться функциямиCoInitializeилиCoInitializeEx.
Кроме того, использование WMI требует инициализации безопасности COM с помощью функцииCoInitializeSecurity
Заметим, что как и метод с использованием счетчиков производительности, этот метод позволяет перечислить процессы на другом компьютере, для чего нужно указать имя компьютера в вызовеIWbemLocator: ConnectServer.
2. Описание программы
2.1 Описание алгоритма
Программа была написана на Microsoft Visual Studio 2005, на языке С++, с использованием библиотек классов MFC, и функций Win32API.
При запуске программы открывается окно:
Рисунок 2.1 Окно программы
Сразу отображается список запущенных процес сов, построенный с помощью функциииEnumProcesses_NtApi, реализующей перечисление процессов с использованием функцииZwQuerySystemInformation.
Определение времени запуска процесса осуществляется с помощью функции CreateTime_str.
При нажатии левой кнопкой мыши на поля ID или Name осуществляется сортировка при помощи функции CMainFrame: OnList_ColumnClick, и функции сортировки CMainFrame: SortCallback.
Рисунок 2.2 Пример сортировки по названию
С помощью кнопки Exit программа закрывается.
3. Инструкция пользователя
3.1 Назначение продукта
Эта программа предназначена для частного пользования, для определения процессов, запущенных на компьютере, и времени их запуска.
3.2 Системные требования
Рекомендованные системные требования для компьютера:
Процессор: Intel Pentium III 0.8Ггц или выше;
ОЗУ: 128 Мб;
ПЗУ: 10 МБ;
Видео адаптер: Поддерживающий Directx 6.0 и выше;
ОС: Windows XP и выше
3.3 Запуск программы
Клиентское приложение состоит из файла pview.exe. При запуске этого файла открывается окно. Автоматически загружается список запущенных приложений. При нажатии левой кнопкой мыши на ID, список процессов, сортируется по коду. При нажатии левой кнопкой мыши на Name, список сортируется по названию. Сортировать можно как по возрастанию, так и по убыванию.
В строке меню находится кнопка Exit, при нажатии на которую, программа закроется.
Выводы
В ходе выполнения данного курсового проекта была разработана программа на языке высокого уровня Visual C++. А также изучены возможности данного языка.
Систематизированы и закреплены практические навыки использования ПК, программного обеспечения, существующих средств обслуживания системных программистов, а также теоретические знания по основным разделам курса Операционные системы. Основное внимание уделено изучению современных операционных систем.
В ходе выполнения курсовой работы были использованы не только учебные средства, но и исходники различных программ.
Получены практические навыки работы в среде Microsoft Visual Studio.
Список литературы
1. Дейтел Х. Дейтел П. Как программировать на С++. Бином Моква, 2004. 1018с.
2. БондаревМ.Ф.ЛипановА.В.ПутятинЕ.П.СинельниковаТ.Ф.Системное программирование в современных операционных системах Компания СМИТ Харьков, 2005. 432с.
3. ХолзнерС. Visual С++. Питер Санкт Петербург, 2006. 580с.
4. ПавловскаяТ.А. С/С++. Программирование на языке высокого уровня СПб: Издательство Питер, 2001. 464с.
5. СаймонР. Microsoft Windows API. Справочник системного программиста. Dia Soft Киев, 2004. 1216с.
6.
7.
8.
Приложение
Тексты файлов программы
- enumproc.cpp
#include stdafx.h
#include enumproc.h
#include
#include
#include
#include
#include SshWbemHelpers.h
// Some definitions from NTDDK and other sources
//
typedef LONGNTSTATUS;
typedef LONGKPRIORITY;
#define NT_SUCCESS(Status) ((NTSTATUS) (Status) >= 0)
#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS) 0xC0000004L)
#define SystemProcessesAndThreadsInformation5
typedef struct _CLIENT_ID {
DWORD UniqueProcess;
DWORD UniqueThread;
} CLIENT_ID;
typedef struct _UNICODE_STRING {
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING;
typedef struct _VM_COUNTERS {
SIZE_T PeakVirtualSize;
SIZE_T VirtualSize;
ULONG PageFaultCount;
SIZE_T PeakWorkingSetSize;
SIZE_T WorkingSetSize;
SIZE_T QuotaPeakPagedPoolUsage;
SIZE_T QuotaPagedPoolUsage;
SIZE_T QuotaPeakNonPagedPoolUsage;
SIZE_T QuotaNonPagedPoolUsage;
SIZE_T PagefileUsage;
SIZE_T PeakPagefileUsage;
} VM_COUNTERS;
typedef struct _SYSTEM_THREADS {
LARGE_INTEGER KernelTime;
LARGE_INTEGER UserTime;
LARGE_INTEGER CreateTime;
ULONGWaitTime;
PVOIDStartAddress;
CLIENT_ID ClientId;
KPRIORITY Priority;
KPRIORITY BasePriority;
ULONGContextSwitchCount;
LONGState;
LONGWaitReason;
} SYSTEM_THREADS, * PSYSTEM_THREADS;
// Note that the size of the SYSTEM_PROCESSES structure is different on
// NT 4 and Win2K, but we dont care about it, since we dont access neither
// IoCounters member nor Threads array
typedef struct _SYSTEM_PROCESSES {
ULONGNextEntryDelta;
ULONGThreadCount;
ULONGReser