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 необходим приложению для последующей работы с этим семафором.

SetConsoleTitle(wTitle); //Установка заголовка - student2.ru

Рис. 4.1. Создание объекта "семафор" приложением

Объекты присутствуют почти во всех компонентах системы, особенно там, где есть данные, которые нужно разделять, защищать, именовать или сделать доступными. Например, посредством объектов реализованы программные и аппаратные прерывания, а также многие другие функции ядра.

Объекты ядра

В рамках данного курса нам придется активно использовать объекты, называемые в руководствах по Win32-программированию объектами ядра (kernel objects). Поддержка объектов ядра осуществляется собственно ядром системы.

Ядро поддерживает базовые объекты двух видов:

-объекты диспетчера (события, мьютексы, семафоры, потоки ядра, таймеры и др.)

- и управляющие объекты (DPC, APC, прерывания, процессы, профили и др.)

Над объектами ядра находятся объекты исполнительной системы, каждый из которых инкапсулирует один или более объектов ядра. Объекты исполнительной системы предназначены для управления памятью, процессами и межпроцессным обменом. Они экспортируются в распоряжение пользовательских приложений через Win32 функции. К ним относятся такие объекты, как: процесс, поток, открытый файл, семафор, мьютекс, маркер доступа и ряд других. Полный список можно увидеть в MSDN. Эти объекты и называются объектами ядра в руководствах по программированию.

Объект представляет собой блок памяти в виртуальном адресном пространстве ядра. Этот блок содержит информацию об объекте в виде структуры данных (см. ниже "структура объекта"). Структура содержит как общие, так и специфичные для каждого объекта элементы. Объекты создаются в процессе загрузки и функционирования ОС и теряются при перезагрузке и выключении питания.

Содержимое объектов доступно только ядру, приложение не может модифицировать его непосредственно. Доступ к объектам можно осуществить только через его функции-методы (инкапсуляция данных), которые инициируются вызовами некоторых библиотечных Win32-функций.

Наши рекомендации