Мегаобучалка Главная | О нас | Обратная связь


ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 19



2015-12-13 382 Обсуждений (0)
ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 19 0.00 из 5.00 0 оценок




1. Объект очереди.

До сих пор мы связывали с каждым мьютексом только одно событие, но в общем случае могут существовать несколько предикатов переменных условий. Например, в случае очереди, действующей по принципу "первым пришел, первым ушел" (first in first out, FIFO), поток, который пытается удалить элемент из очереди, должен дождаться события, указывающего на то, что очередь не является пустой, а поток, помещающий элемент в очередь, должен дождаться события, указывающего на то, что очередь не является заполненной. Решение заключается в предоставлении двух событий — по одному для каждого условия.

В программе 10.3 представлены необходимые объявления объекта очереди и его функций. В объявлениях намеренно применяется стиль, отличающийся от того, который принят в Windows и который мы использовали до сих пор. Эта программа была получена преобразованием ее первоначального варианта, реализованного в UNIX на основе потоков Pthreads, чем и объясняется происхождение использованного нами стиля. Точно так же и вы можете наследовать тот или иной стиль или определить собственный, который соответствует вашему вкусу или принятым в вашей организации требованиям.

 

2. Реестр. Управление разделами.

Реестр — это централизованная иерархическая база данных конфигурации

приложений и системы. Доступ к реестру осуществляется через разделы

реестра, которые аналогичны каталогам файловой системы. Раздел может

содержать другие разделы или пары "параметр-значение", которые можно

уподобить именам файлов и их содержимому.

Пользователь или администратор могут просматривать и редактировать

содержимое реестра с помощью редактора реестра, который вызывается

командой REGEDIT32. Кроме того, программы могут управлять реестром через

функции API, описанные в этом разделе.

Пары "параметр-значение" в реестре содержат, в частности, следующую

информацию:

• номер версии и номер выпуска операционной системы, а также имя

зарегистрированного пользователя;

• информацию подобного рода обо всех правильно установленных

приложениях;

• информацию о типе процессора компьютера, количестве процессоров,

системной памяти и т.д.;

• пользовательскую информацию, такую как основной каталог и настройки

приложений;

• данные безопасности, например имена учетных записей пользователей;

• установленные службы;

• соответствия между расширениями файлов и выполняемыми программами,

которые применяются оболочкой интерфейса пользователя, когда он

щелкает на значке файла; например, расширение .doc может

соответствовать Microsoft Word;

• соответствия между сетевыми адресами и именами компьютеров.

Разделы реестра

Можно заметить аналогию между каталогами файловой системы и раз-

делами реестра. Каждый раздел может содержать другие разделы, а также

последовательность пар "параметр-значение". Подобно тому как к файловой

системе можно обращаться с помощью полных имен файлов, к реестру можно

обращаться по именам разделов. Точками входа в реестр служат несколько

стандартных разделов.

1. HKEY_LOCAL_MACHINE хранит физическую информацию о машине, а

также данные об установленном программном обеспечении. Для каждой

установленной программы создаются подразделы вида

i. SOFTWARE\Название_компании\Название_продукта\Версия.

2. HKEY_USERS содержит данные конфигурации пользователей.

3. HKEY_CURRENT_CONFIG содержит текущие параметры настройки,

такие как разрешающая способность монитора и шрифты.

4. HKEY_CLASSES_ROOT содержит подразделы, определяющие

соответствие между расширениями файлов и классами и приложениями,

используемыми оболочкой для доступа к объектам с этими

расширениями. В этом разделе также записаны все данные, необходимые

для объектной модели компонентов Microsoft (COM).

5. HKEY_CURRENT_USER. Сюда относится информация данного

пользователя, включая переменные окружения, принтеры и

пользовательские настройки приложений.

Управление реестром

Функции управления реестром могут получать и устанавливать значения

параметров, а также создавать новые подразделы и пары "параметр—значение".

Для указания существующих разделов и получения новых применяются

дескрипторы разделов типа HKEY. Значения имеют определенный тип;

существует несколько возможных типов, например строки, двойные слова

(DWORD) и расширяемые строки, параметры которых могут заменяться

переменными окружения.

Управление разделами

Функция RegOpenKeyEx открывает подраздел. Начиная с одного из

стандартных зарезервированных разделов, можно обойти весь реестр и

получить дескриптор любого нужного подраздела.

LONG RegOpenKeyEx { HKEY hKey, LPCTSTR lpSubKey,

DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)

Параметры

hKey идентифицирует дескриптор открытого в данный момент раздела или

одного из стандартных зарезервированных разделов;

phkResult указывает на переменную типа HKEY, которая принимает

дескриптор вновь открытого раздела.

lpSubKey — имя подраздела. Оно может содержать путь, например

Microsoft\WindowsNT\CurrentVersion. Значение NULL вызывает открытие

нового раздела-дубликата hKey. Значение ulOptions должно быть равно

нулю.

samDesired — маска доступа, описывающая атрибуты безопасности нового

раздела. Возможные значения — KEY_ALL_ACCESS, KEY_WRITE,

KEY_QUERY_VALUE u KEY_ENUMERATE_SUBKEYS.

Возвращаемое значение — это обычно ERROR_SUCCESS. Любое другое

значение указывает на ошибку. Для закрытия открытого раздела служит

функция RegCloseKey, в единственном параметре которой указывается

дескриптор раздела.

Чтобы получить имена подразделов, следует указать дескриптор раздела в

функции RegEnumKeyEx.

Существуют также функции, предназначенные для получения пар

"параметр-значение": RegEnumValue и RegQueryValueEx. Функция

RegSetValueEx записывает типизированные данные в поле значения

открытого раздела.

RegEnumKeyEx выводит подразделы открытого раздела реестра подобно

тому, как FirstFile и FindNextFile выводят содержимое каталога. Эта

функция выдает имя раздела, строку класса и время последнего изменения.

LONG RegEnumKeyEx ( HKEY hKey, DWORD dwIndex,

LPTSTR lpMame, LPDWORD lpcbName,

LPDWORD lpReserved,LPTSTR lpClass,

LPDWORD lpcbClass, PFILETIME lpftLastWriteTime)

Параметр dwIndex при первом вызове должен быть равен нулю, а при

каждом последующем — увеличиваться на единицу. Имя раздела и его размер, а

также строка класса и ее размер возвращаются обычным способом. Функция

возвращает ERROR_SUCCESS или значение ошибки.

Можно также создавать новые разделы. Для этого предназначена функция

RegCreateKeyEx. Разделам можно присваивать атрибуты безопасности таким

же образом, как каталогам и файлам.

LONG RegCreateKeyEx (HKEY hKey, LPCTSTR lpSubKey,

DWORD Reserved, LPTSTR lpClass, DWORD dwOptions,

REGSAM samDesired, LPSECURITY_ATTRIBUTES

lpSecurityAttributes, PHKEY phkResult,

LPDWORD lpdwDisposition)

Параметры

lpSubKey — имя нового подраздела в открытом разделе, обозначенном

дескриптором hKey.

lpClass — класс или тип объекта раздела, описывающий данные, которые он

представляет. Возможные значения включают, в частности, REG_SZ (строку с

завершающим нулем) и REG_DWORD (двойное слово).

dwOptions — либо нуль, либо одно из взаимно исключающих значений:

REG_OPTION_VOLATILE или REG_OPTION_NON_VOLATILE. Постоянная

(non-volatile) информация реестра хранится в файле и восстанавливается при

перезапуске системы. Непостоянные разделы хранятся в памяти и не

восстанавливаются.

samDesired — то же значение, что и в RegOpenKeyEx.

lpSecurityAttributes может иметь значение NULLили указывать на атрибуты

безопасности. Возможные права доступа выбираются из значений, указанных

для samDesired.

lpdwDisposition указывает на значение DWORD, которое отмечает,

существовал ли раздел раньше (REG_OPENED_EXISTING_KEY) или он создан

вновь (REG_CREATED_NEW_KEY).

Для удаления раздела служит функция RegDeleteKey. Два ее параметра —

дескриптор открытого раздела и имя подраздела.

 

3. Исключения и их обработчики.

Основное внимание в данной главе сфокусировано на структурной обработке исключений (Structured Exception Handling, SEH), но наряду с этим обсуждены также обработчики управляющих сигналов консоли и векторная обработка исключений (Vectored Exception Handling, VEH).

SEH предоставляет механизм обеспечения надежности программ, благодаря которому приложения получают возможность реагировать на такие непредсказуемые события, как исключения адресации, арифметические сбои и системные ошибки. Использование SEH позволяет программам осуществлять корректный выход из любой точки программного блока и автоматически выполнять предусмотренную программистом обработку ошибок для восстановления своей работоспособности. SEH гарантирует своевременное освобождение ресурсов и выполнение любых других операций очистки, прежде чем блок, поток или процесс закончат работу либо под управлением программы, либо в ответ на возникновение исключительной ситуации. Кроме того, SEH легко добавляется в существующие программные коды, во многих случаях обеспечивая упрощение логики работы программы.

Мы используем SEH в приведенных ниже примерах программ и расширим посредством этого механизма возможности функции обработки ошибок ReportError, которая была введена в главе 2. Обычно сфера применимости SEH ограничивается программами, написанными на языке на С. Вместе с тем, представленные ниже возможности SEH воспроизводятся в C++, С# и других языках программирования с использованием весьма похожих механизмов.

В настоящей главе описаны также обработчики управляющих сигналов консоли, благодаря которым программы могут воспринимать внешние сигналы, вырабатываемые, например, при нажатии сочетания клавиш <Ctrl+C>, выходе пользователя из системы или завершении работы системы. Кроме того, использование подобных сигналов обеспечивает реализацию ограниченных форм межпроцессного взаимодействия.

Глава завершается рассмотрением векторной обработки исключений, которая потребует от вас использования операционных систем Windows XP или Windows Server 2003. Благодаря VEH пользователь получает возможность определить функции, которые должны вызываться сразу же после возникновения исключения, не дожидаясь активизации SEH.



2015-12-13 382 Обсуждений (0)
ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 19 0.00 из 5.00 0 оценок









Обсуждение в статье: ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 19

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (382)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)