SetConsoleTitle(wTitle); //Установка заголовка
//SetConsoleOutputCP(1251);
//SetConsoleTextAttribute(hout, FOREGROUND_RED | FOREGROUND_INTENSITY);
FillConsoleOutputAttribute(hOut, 0, 2000, crPoint, &dL); // очистка экрана
for (int iY = 0; iY < 16; iY++) { //цикл по iY
crPoint.Y = iY; //переносим точку координат по оси Y
FillConsoleOutputAttribute(hOut,iY << 4,80, crPoint, &dL); //Красим от iY до 80
SetConsoleCursorPosition(hOut, crPoint); //Перемещаем курсор
}
return 0;
}
/* При выполнении данной практической работы я освоил
*/
Практическое занятие №21
Краткие теоретические сведения
Синтаксис инструкции try
__try
{
// код программы с возможной ошибкой (защищенный раздел)
}
__except ( expression )
{
// Обработчик исключения
}
Практическая часть
//Практическое занятие № 21
//Группа xxxxxx Терминал N ФИО
#include "stdafx.h"
#include "windows.h" // win32 API
#include <locale.h> // подключение Русского языка
#include <iostream> // инструкции c++ std,cout,cin …
using namespace std; // пространство стандартных имен */
void main() {
setlocale(LC_ALL,"RUS");
int iI = 1, iJ = 0, iK = 0,iNtry;
__try { //Защищенный раздел
iNtry=13;
iK = iI / iJ;// Возможно деление на 0
cout << "in try" << endl ;
cout << "iK= " << iK << endl ;
cout << "LastError = " << GetLastError() << endl;
}
__except (1) {
cout << "in except " << endl ;
cout << "Деление на 0 iNtry= " << iNtry << endl ;
cout << "LastError= " << GetLastError() << endl;
}
}
/* При выполнении данной практической работы я освоил
.
*/
Вопросы :
1.Что означает инструкция COORD crPoint;?
2.Что означают инструкции crPoint.X = 0; crPoint.Y = 0;?
3.Что делает инструкция GetStdHandle(STD_OUTPUT_HANDLE); ?
4.Что делает инструкция SetConsoleTitle(wTitle); ?
5.Что делает инструкция SetConsoleCursorPosition(hOut, crPoint);?
6. Что делает инструкция __try { } __except (1) { cout << "in except " << endl ;}
Лекция 7. Объекты в ОС Windows.
В лекции описаны особенности функционирования менеджера объектов — одного из ключевых компонентов ОС Windows. Объекты активно используются для организации доступа к ресурсам, которые нужно защищать, именовать, разделять и т. д. Среди совокупности объектов выделены объекты ядра. Описаны дескрипторы объектов, отвечающие за связь объекта с приложением. Рассмотрены вопросы именования объектов и связь пространства имен объектов с другими пространствами имен. Для управления объектами организована специальная централизованная база данных — реестр
Введение
Для работы с важными системными ресурсами ОС Windows создает объекты, управление которыми осуществляет менеджер объектов. Когда приложение открывает файл, создает поток или семафор, оно получает описатель ( handle ) соответствующего объекта (см. рис. 4.1). Например, после выполнения программного оператора
hSemaphore = CreateSemaphore(NULL, 0, MaxCount, "MySemaphore");
создающего семафор, возвращаемый описатель hSemaphore необходим приложению для последующей работы с этим семафором.
Рис. 4.1. Создание объекта "семафор" приложением
Объекты присутствуют почти во всех компонентах системы, особенно там, где есть данные, которые нужно разделять, защищать, именовать или сделать доступными. Например, посредством объектов реализованы программные и аппаратные прерывания, а также многие другие функции ядра.
Объекты ядра
В рамках данного курса нам придется активно использовать объекты, называемые в руководствах по Win32-программированию объектами ядра (kernel objects). Поддержка объектов ядра осуществляется собственно ядром системы.
Ядро поддерживает базовые объекты двух видов:
-объекты диспетчера (события, мьютексы, семафоры, потоки ядра, таймеры и др.)
- и управляющие объекты (DPC, APC, прерывания, процессы, профили и др.)
Над объектами ядра находятся объекты исполнительной системы, каждый из которых инкапсулирует один или более объектов ядра. Объекты исполнительной системы предназначены для управления памятью, процессами и межпроцессным обменом. Они экспортируются в распоряжение пользовательских приложений через Win32 функции. К ним относятся такие объекты, как: процесс, поток, открытый файл, семафор, мьютекс, маркер доступа и ряд других. Полный список можно увидеть в MSDN. Эти объекты и называются объектами ядра в руководствах по программированию.
Объект представляет собой блок памяти в виртуальном адресном пространстве ядра. Этот блок содержит информацию об объекте в виде структуры данных (см. ниже "структура объекта"). Структура содержит как общие, так и специфичные для каждого объекта элементы. Объекты создаются в процессе загрузки и функционирования ОС и теряются при перезагрузке и выключении питания.
Содержимое объектов доступно только ядру, приложение не может модифицировать его непосредственно. Доступ к объектам можно осуществить только через его функции-методы (инкапсуляция данных), которые инициируются вызовами некоторых библиотечных Win32-функций.