В этом разделе будут приведены минимальные сведения, необходимые для выполнения простых операций с файлами. В отличие от 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.