Функция CreateFile
Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
lpSecurityAttributes As Any, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long
CreateFile создает или открывает объекты - консоль, папки (только открытие), дисковые устройства, файлы и др. Чаще всего функция используется для работы с файлами. Открытый файл может использоваться для чтения или записей данных. После завершения работы с файлом необходимо закрыть файл, используя его описатель, функцией CloseHandle
Примечание Используйте ссылку по значению ByVal при использовании параметра lpSecurityAttributes равным 0
Возвращаемое значение
В случае ошибки функция возвращает -1 (используйте GetLastError для получения кода ошибки). В успешном случае функция возвращает описатель открытого или созданного файла или другого объекта.
Параметры
- lpFileName
- Имя файла или другого объекта
- dwDesiredAccess
- Комбинация следующих флажков,определяющих права на запись или чтение данных:
- GENERIC_READ= &H80000000
- Разрешается чтение из файла(объекта)
- GENERIC_WRITE = &H40000000
- Разрешается запись в файл(объект)
- dwShareMode
- Комбинация следующих флажков, определяющих права по совместному доступу к файлу(объекту) другими программами:
- FILE_SHARE_READ = &H1
- Разрешено чтение записей файла другими программами
- FILE_SHARE_WRITE = &H2
- Разрешена запись в файл другими программами
- lpSecurityAppributes
- Windows NT, 2000: Структура SECURITY_ATTRIBUTES определяет уровень и тип защиты объекта. Windows 95\98\Me: Параметр равен 0
- dwCreationDisposition
- Комбинация следующих флажков, определяющих действия,необходимые когда файл существует и когда файл не существует:
- CREATE_NEW=1
- Создается новый файл(объект). Если указанный файл существует, функция завершается с ошибкой
- CREATE_ALWAYS=2
- Создается новый файл(объект). Если указанный файл существует, то он переписывается
- OPEN_EXISTING=3
- Открывается существующий файл. Если указанный файл существует, функция завершается с ошибкой
- OPEN_ALWAYS=4
- Если указанный файл существует, функция открывает его. Если указанный файл не существует, то он создается
- TRUNCATE_EXISTING=5
- Открывается существующий файл(объект) с уничтожением его содержимого. Если указанный файл не существует,то функция завершает работу с ошибкой
- dwFlagsAndAttributes
- Комбинация следующих флажков, определяющих атрибуты и флаги
- FILE_ATTRIBUTE_ARCHIVE = &H20
- Архивный файл
- FILE_ATTRIBUTE_HIDDEN = &H2
- Скрытый файл
- FILE_ATTRIBUTE_NORMAL = &H80
- У файла нет атрибутов(не может комбинироваться с другими атрибутами)
- FILE_ATTRIBUTE_READONLY = &H1
- Файл только для чтения
- FILE_ATTRIBUTE_SYSTEM = &H4
- Системный файл,используемый операционной системой
- FILE_FLAG_DELETE_ON_CLOSE = &H4000000
- Файл удаляется после закрытия.Используется для временных файлов
- FILE_FLAG_NO_BUFFERING = &H20000000
- Система не буферизирует файловый ввод-вывод
- FILE_FLAG_OVERLAPPED = &H40000000
- Устанавливается асихронный доступ к файлу(Windows 95, 98, CE: Не поддерживается применительно к файлу). Функция должна использовать структуру OVERLAPPED
- FILE_FLAG_POSIX_SEMANTICS = &H1000000
- Возможно использование файлов,имена которых различаются регистром букв
- FILE_FLAG_RANDOM_ACCESS = &H10000000
- Режим кэширования файла оптимизируется для произвольного доступа к файлу
- FILE_FLAG_SEQUENTIAL_SCAN = &H8000000
- Режим кэширования файла оптимизируется для последовательного доступа к файлу
- FILE_FLAG_WRITE_THROUGH = &H80000000
- Отключение промежуточного кэширования для снижения вероятности потери данных
- hTemplateFile
- описатель открытого файла
Пример
' Отобразим дату создания файла D:\readme.txt
Dim hFile As Long ' описатель открываемого файла
Dim ctime As FILETIME ' время создания файла
Dim atime As FILETIME ' время последнего открытия файла
Dim mtime As FILETIME ' время последнего изменения файла
Dim thetime As SYSTEMTIME ' используем для манипуляций со временем
Dim retval As Long ' возвращаемое значение
' Сначала, откроем файл D:\readme.txt
hFile = CreateFile("D:\readme.txt", GENERIC_READ, FILE_SHARE_READ, ByVal CLng(0), OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, 0)
If hFile = -1 Then
Debug.Print "Невозможно открыть файл"
End ' выходим из программы
End If
' Получаем время создания, последнего открытия и изменения файла
retval = GetFileTime(hFile, ctime, atime, mtime)
' Конвертируем время создания в локальное время
retval = FileTimeToLocalFileTime(ctime, ctime)
' Преобразуем формат FILETIME в формат SYSTEMTIME
retval = FileTimeToSystemTime(ctime, thetime)
' Показываем время создания файла
Debug.Print "Файл создан "; thetime.wMonth; "-"; thetime.wDay; "-"; thetime.wYear
' Закрываем файл для освобождения ресурсов
retval = CloseHandle(hFile)
Категория
Файлы
Реклама