русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Структуры данных для управления файлами


Дата добавления: 2013-12-24; просмотров: 1193; Нарушение авторских прав


Рассмотрим структуры данных, задействованные при работе с файловой системой NTFS (рис. 9).

 

Рис. 9. Структуры данных, связанные с NTFS

 

В структуре данных EPROCESS, описывающей процесс в Windows (см. лекцию 6 «Процессы и потоки»), имеется поле ObjectTable (файл base\ntos\inc\ps.h, строка 293), в котором содержится указатель на таблицу дескрипторов процесса типа HANDLE_TABLE (файл base\ntos\inc\ex.h, строка 5179). В строках этой таблицы содержатся ссылки на ресурсы, открытые процессом, и в том числе, ссылки на объекты типа FILE_OBJECT, которые упоминались в лекции 10 «Управление устройствами».

Структура FILE_OBJECT (файл base\ntos\inc\io.h, строка 1763) содержит следующие основные поля:

· FileName – строковое имя файла;

· Vpb – указатель на структуру VPB, которая представляет том на устройстве внешней памяти;

· FsContext – указатель на блок управления потоком данных NTFS;

· DeviceObject – указатель на объект типа DEVICE_OBJECT, связанный с физическим диском, на котором находится файл.

 

В структуре VPB (Volume Parameter Block) содержатся следующие поля (файл base\ntos\inc\io.h, строка 1288):

· VolumeLabelLength – размер тома в байтах;

· DeviceObject – указатель на объект типа DEVICE_OBJECT, ассоциированный с данным томом (логическим диском);

· RealDevice – указатель на объект типа DEVICE_OBJECT, ассоциированный с физическим устройством внешней памяти (физическим диском);

· SerialNumber – серийный номер тома;

· ReferenceCount ­– счетчик количества ссылок на структуру; если это поле не равно нулю, значит, структура кем-то используется;

· VolumeLabel – метка (строковое имя) тома. Максимальная длина метки определяется константой MAXIMUM_VOLUME_LABEL_LENGTH, равной 32 двухбайтовым символам (см. файл base\ntos\inc\io.h, строка 1286).



 

На рис. 9 изображен физический диск, разбитый на три тома (логических диска) – два тома NTFS и один том FAT32. Поле DeviceObject структуры VPB указывает на объект DEVICE_OBJECT, который ссылается на первый из томов NTFS. Поле RealDevice структуры VPB указывает на объект DEVICE_OBJECT, связанный с физическим диском.

 

С каждым файлом NTFS, с которым операционная система в данный момент работает, связана структура данных, называемая блок управления файлом (File Control Block, FCB). В этой структуре хранится указатель на запись в таблице MFT для данного файла (см. рис. 9).

Поскольку в файле существует в общем случае несколько потоков, для каждого потока создается своя структура данных – блок управления потоком (Stream Control Block, SCB), в котором содержится ссылка на FCB. Поле FsContext структуры FILE_OBJECT указывает на SCB для открытого потока, таким образом, структура FILE_OBJECT на самом деле связана с потоком, а не с файлом. Чтобы открыть другой поток в том же файле требуется создавать новый объект FILE_OBJECT. На рис. 9 показана ситуация, когда процесс открыл два разных потока одного и того же файла. В WRK можно найти описание блока управления потоком SCB – структуру FSRTL_ADVANCED_FCB_HEADER (файл base\ntos\inc\fsrtl.h, строка 120) вместе с её основным полем, представляющим структуру FSRTL_COMMON_FCB_HEADER (тот же файл, строка 65).

 



<== предыдущая лекция | следующая лекция ==>
Файлы NTFS | Стадии изменений


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.222 сек.