- •Лабораторная работа № 1
- •1.1. Цель работы
- •1.2. Теоретическое введение
- •1.2.1. Получение информации об операционной системе
- •1.2.2. Получение информации из реестра Реестр играет ключевую роль в конфигурировании и управлении Windows. Это хранилище общесистемных и пользовательских параметров.
- •1.2.3. Получение информации о системных каталогах Windows
- •1.2.4. Получение информации о диске
- •1.3. Создание приложения для получения характеристик компьютера и операционной системы
- •Контрольные вопросы
1.2.3. Получение информации о системных каталогах Windows
Для получения информации о системных каталогах Windows используются две функции:
GetSystemDirectory – Получение имени системного каталога в котором содержатся системные библиотеки, драйверы и файлы шрифтов;
GetWindowsDirectory – Получение имени системного каталога, в котором содержатся файлы инициализации, файлы помощи и стандартные приложения Windows).
Данные функции имеют аналогичную структуру входных и выходных параметров.
Рассмотрим работу данных функций на примере функции GetSystemDirectory:
function GetSystemDirectory(lpBuffer: PChar; uSize: UINT): UINT;
где
lpBuffer – указатель на выходной буфер, в который записывается информация о каталоге. Информация записывается в виде строки, заканчивающейся двоичным нулем.
uSize – переменная содержит размер буфера.
При успешном завершении функция GetSystemDirectory возвращает длину полученной строки в выходном буфере. В случае ошибки функция GetSystemDirectory возвращает 0.
1.2.4. Получение информации о диске
Для получения информации о диске используется функция GetVolumeInformation:
function GetVolumeInformation(lpRootPathName: PChar;
lpVolumeNameBuffer: PChar; nVolumeNameSize: DWORD; lpVolumeSerialNumber: PDWORD;
var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
lpFileSystemNameBuffer: PChar; nFileSystemNameSize: DWORD): BOOL; stdcall;
Назначение параметров данной функции приведено в таблице 1.3.
Таблица 1.3.
Параметры функции GetVolumeInformation
Параметр |
Описание |
lpRootPathName |
имя диска, информацию о котором надо получить |
lpVolumeNameBuffer |
буфер, в который будет помещено имя тома диска |
1 |
2 |
nVolumeNameSize |
размер буфера для имени тома |
lpVolumeSerialNumber |
переменная, в которую будет записан серийный номер |
lpMaximumComponentLength |
переменная, в которую будет записано максимальное значение пути поддерживаемое файловой системой диска |
lpFileSystemFlags |
флаги файловой системы. Возможные значения флагов приведены в таблице 1.4. |
lpFileSystemNameBuffer |
буфер, в который будет помещено имя файловой системы |
nFileSystemNameSize |
размер буфера для имени файловой системы. |
Таблица 1.4.
Возможные значения флагов в параметре lpFileSystemFlags функции GetVolumeInformation
Флаг |
Описание |
fs_case_is_preserved |
указывает на то, что файловая система сохраняет регистр имен файлов, когда сохраняет имя на диске |
fs__case_sensitive |
файловая система чувствительна к регистру имен файлов |
fs_unicode_stored_on_disk |
файловая система поддерживает имена в UNICODE |
fs_persistent_acls |
файловая система поддерживает списки доступа (например, NTFS) |
fs_file_compression |
файловая система поддерживает компрессию на уровне файлов |
fs_vol_is_compressed |
файловая система поддерживает компрессию на уровне тома (например, DoubleSpace тома диска) |
Если функция GetVolumeInformation успешно выполнена, она возвращает ненулевое значение (true). Если произошла ошибка – возвращается 0 (false).
Тогда информацию об ошибке можно получить, вызвав функцию GetLastError.