В этом разделе будут приведены минимальные сведения, необходимые для выполнения простых операций с файлами. В отличие от MS DOS среда Win32 способна поддерживать несколько файловых систем. Главные требования к этим системам — иерархичность и соблюдение определенных правил присвоения имен каталогам и файлам.
Перечислим функции API Win32, имеющие отношение к работе с файловой системой. Полное их описание можно получить в MSDN.
Функция |
Назначение |
AreFileApisANSI |
Определение набора символов файла — ANSI или OEM |
CancelIo |
Отменить все ждущие обработки операции (I/O) ввода и вывода |
CloseHandle |
Закрыть открытый дескриптор файла |
CopyFile, CopyFileEx CopyProgressRoutine |
Копирование cуществующего файла в новый |
CreateDi rectory, CreateDirectoryEx |
Определенная приложением функция обратного вызова, используемая с функциями CopyFileEx и MoveFileWithProgress. Она вызывается, когда завершается часть операции копирования или пересылки |
CreateFile |
Создать каталог |
DefineDosDevice |
Создать файл или объект специального типа |
DeleteFile |
Определить, переопределить или удалить имена устройства MS DOS |
FindCiose |
Удалить файл |
Fi ndCloseChangeNoti fi cati on |
Закрыть указанный поисковый дескриптор (см. функции FindFirstFile и FindNextFile) |
FindFi rstChangeNoti fication |
Закрыть объект-уведомление об изменении файла |
FindFirstFile, FindFirstFileEx, FindNextFile |
Создать объект-уведомление об изменении файла |
F1ndNextChangeNoti fi cati on |
Поиск файлов |
FlushFileBuffers |
Сброс объекта-уведомления в занятое состояние |
GetBinaryType |
Очистка буфера для указанного файла и запись всех буферизированных данных в файл |
GetCurrentDirectory |
Определить, является ли файл исполняемым, и если это так, то для какой подсистемы — Win32, MS DOS, OS/2, POSIX и т. д. |
GetDiskFreeSpace, GetDiskFreeSpaceEx |
Получить текущий каталог |
GetDriveType |
Информация относительно указанного диска, включая количество свободного пространства на нем |
GetFileAttributes, GetFileAttributesEx |
Определить тип диска — съемный, фиксированный, CD-ROM, электронный или сетевой |
GetFi1elnformati onByHandle |
Получить атрибуты файла или каталога |
GetFi1eSi ze, GetFi1eSi zeEx |
Найти информацию относительно указанного файла |
GetFileType |
Получить размер указанного файла |
GetFullPathName |
Получить тип указанного файла |
GetLogical Drives, GetLogi calDri veStri ngs |
Получить полный путь и имя для указанного файла |
GetLongPathName |
Определить доступные в настоящее время дисководы |
GetShortPathName |
Преобразовать указанный путь к его длинной форме |
GetTempFileName |
Получить псевдоним файла |
GetTempPath |
Создать имя для временного файла |
LockFile, LockFileEx |
Получить путь каталога для временных файлов Блокировка файла |
Далее на примерах конкретных программ разберемся с тем, как использовать в программах на ассемблере наиболее интересные и часто применяемые функции из перечисленных выше для работы с файлами API Win32. В целях экономии места все примеры реализованы в виде консольных приложений. Основное внимание уделено не полноте описания параметров для вызова той или иной функции и результатов ее работы (эту информацию можно найти в справочниках по функциям API), а деталям практической реализации файловых операций в программах на языке ассемблера. Для изучения подробностей работы функций API Win32 необходимо использовать какой-либо отладчик для Windows, напри-MepTD32.EXE.