Для работы с файловой системой могут использоваться следующие функции:
CreateFile –создание или открытие объекта ядра “файл”.
---> (Рихтер2, стр.32–33, 422–423)
GetVolumeInformation – получение информации о томе, где расположен указанный корневой каталог.
FindFirstFile – поиск файла в директории с заданным именем (можно задать маску имени).
FindFirstFileEx – поиск файла в директории с заданным именем и атрибутами.
FindNextFile – продолжение поиска файла. Вызывается после FindFirstFile или FindFirstFileEx.
GetBinaryType – определение, является ли файл исполняемым, и если это так, то определяет его тип (для какой системы).
GetCurrentDirectory – получение полного имени текущего каталога для текущего процесса. ---> (Рихтер2, стр.60)
GetDiskFreeSpace – получение информации о свободном месте, размере кластера, размере сектора для тома, где расположен указанный корневой каталог.
GetDriveType – получение информации о типе диска: сменный носитель, жесткий диск, CD-ROM, RAM диск, сетевой диск.
GetFileAttributes – получение атрибутов для указанного файла или каталога.
GetFileInformationByHandle – получение подробной информации о файле по его дескриптору.
GetFileSize – получение размера указанного файла. ---> (Рихтер2, стр.431)
GetFileSizeEx – получение размера указанного файла (для хранения размера требуется тип больше чем DWORD (больше 4 ГБ)).
GetFileType – получение типа указанного файла: блочный, символьный, канал.
GetFullPathName – получение полного пути и имени указанного файла.
---> (Рихтер2, стр.61)
GetLogicalDrives – получение битовой маски с информацией об отображении логических дисков.
GetLogicalDriveStrings – получение строки с информацией об отображении логических дисков.
GetLongPathName – преобразует указанный путь в его длинную форму представления.
GetShortPathName – преобразует указанный путь в его короткую форму представления.
SearchPath – поиск указанного файла.
SetCurrentDirectory – изменяет текущий каталог для текущего процесса.
---> (Рихтер2, стр.60)
Для работы с памятью могут использоваться следующие функции (подробно механизмы управления памятью изучаются в лабораторной работе 6):
CopyMemory – копирование блока памяти с одного места в другое.
FillMemory – заполнение блока памяти указанным значением.
MoveMemory – перемещение блок памяти с одного места в другое.
---> (Рихтер2, стр.430)
ZeroMemory – заполнение блока памяти нулями. ---> (Рихтер2, стр.385)
GlobalAlloc – выделение указанного числа байт из глобальной кучи.
GlobalFree – освобождение объекта глобальной кучи.
GlobalReAlloc – изменение размера или атрибутов объекта глобальной кучи.
GlobalSize – получение текущего размера указанного глобального объекта.
LocalAlloc – выделение указанного числа байт из локальной кучи.
LocalFree – освобождение объекта глобальной кучи.
LocalReAlloc – изменение размера или атрибутов объекта глобальной кучи.
LocalSize – получение текущего размера указанного глобального объекта.
GetProcessHeap – получение дескриптора кучи вызывающего процесса.
---> (Рихтер2, стр.462)
HeapAlloc – выделение блока памяти из кучи. ---> (Рихтер2, стр.466–467)
HeapCompact – попытка сжать кучу. ---> (Рихтер2, стр.472)
HeapCreate – создание объекта кучи. ---> (Рихтер2, стр.465–466)
HeapDestroy – разрушение объекта кучи. ---> (Рихтер2, стр.468–469)
HeapFree – освобождение блока памяти, выделенного в куче.
---> (Рихтер2, стр.468)
HeapQueryInformation – получение информации о куче.
HeapReAlloc – изменение размера или атрибутов объекта глобальной кучи.
---> (Рихтер2, стр.467–468)
HeapSize – получение размера блока памяти, выделенного в куче.
---> (Рихтер2, стр.468)
Дополнительная информация о работе с файловой системой и памятью может быть получена из соответствующей литературы и из системы помощи MS SDK.
Постановка задачи: разработать оконное приложение в среде программирования Visual C, которое решает поставленную задачу в соответствии со своим вариантом (учесть наличие алиасов и косвенных файлов). Для хранения промежуточных результатов можно использовать средства WIN32 API для работы с памятью.