Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛРОС№1.doc
Скачиваний:
2
Добавлен:
05.05.2019
Размер:
124.93 Кб
Скачать

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]