Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
заочникиОС / Лабораторные работы / Лабораторная работа № 6.doc
Скачиваний:
64
Добавлен:
17.04.2015
Размер:
95.74 Кб
Скачать

Структуры данных для использования системных функций

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

  1. функции, которые выполняют действие;

  2. функции, которые получают информацию.

Специализированые каталоги windows

Операционная система – это среда для "сосуществования" многих программ, которые взаимодействуют между собой и используют общие ресурсы. Для того, чтобы избежать противоречий между программами и хранить настройки системы, разработчики WINDOWS ввели специальную базу данных, которая называется реестром. Реестр сохраняется в файлах user.dat но system.dat. В половине случаев крах операционной системы связан с неверной информацией именно в этих файлах.

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

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

Константа

Значения

Комментарии

CSIDL_DESKTOP

0

Программы, которые находятся на экране -

"Рабочий стол" (Desktop)

CSIDL_PROGRAMS

2

Пункт системного меню "Программы" (Program files)

CSIDL_PRINTERS

4

Содержит установленные принтеры

CSIDL_PERSONAL

5

Папка "Мои документы" (MyDocuments)

CSIDL_FAVORITES

6

Папка "Избранное" (Favorites)

CSIDL_STARTUP

7

Программы, которые стартуют автомати-чески "Автозагрузка" (Startup)

CSIDL_RECENT

8

Системное меню "Документы" (Documents)

CSIDL_SENDTO

9

Содержание пункта меню "Отправить" (SendTo)

CSIDL_STARTMENU

0bh

Содержания раздела "Главное меню" (StartMenu)

CSIDL_NETHOOD

13h

Раздела "Сетевое окружение" (Network neighborhood)

CSIDL_FONTS

14h

Папки с шрифтами WINDOWS (Fonts)

CSIDL_TEMPLATES

15h

Шаблонов документов (Templates)

CSIDL_APPDATA

1ah

Рабочие папки установленных программ

CSIDL_INTERNET

20h

Временные INTERNET-файлы

CSIDL_COOKIES

21h

Файлов персонализации доступа в INTERNET

CSIDL_HISTORY

22h

Отчета о работе пользователя

Пользователь получает название специализированного каталога за 2 шага:

  1. С помощью функции SHGetSpecialFolderLocation находит дескриптор (хендл) специализированной папки, который зависит от индекса, который находится в таблице;

  2. С помощью функции SHGetPathFromIDList по хендлу находит название самой папки.