Ввод/вывод файлов. Создание и открытие файлов, страница 5

-

Пример

В следующем примере (рис. 17.2) показано, как использовать функцию GetFilelnformationByHandle для определения порядкового номера тома, на котором находится файл FILE.DAT. Когда пользователь выбирает пункт меню Test!, в окне сообщения отображается порядковый номер тома.

См.    \local-sources\chapl7\17-09.txt

GetFileSize                              Windows 98   • Windows 2000

Описание

Функция GetFileSize позволяет определить размер файла в байтах. Применение этой функции с дескриптором устройства, не поддерживающего поиск (такого как, канал или устройство связи), не имеет смысла. Для определения типа файла служит функция GetFUeType.

Синтаксис

DWORD GetFileSize( HANDLE hFile, LPDWORD IpdwFileSizeHigh )

Параметры

hFile

HANDLE. Дескриптор открытого файла, размер которого необходимо определить. Дескриптор должен быть создан с правами доступа к файлу GENERIC_READ или GENERIC_WRITE.

IpdwFileSizeHigh

LPDWORD. Указатель на переменную, в крторой должны быть возвращены старшие 32 бита размера файла. Этот параметр может быть равен NULL, если для приложения не требуются старшие 32 бита размера файла.

Возвращаемое значение

DWORD. В случае успешного выполнения — младшие 32 бита размера файла, а если параметр IpdwFileSizeHigh отличен от NULL, функция помещает старшие 32 бита размера файла в переменную, указанную этим параметром. Если функция завершается неудачно и параметр IpdwFileSizeHigh равен NULL, возвращаемое значение — OxFFFFFFFF. Если параметр IpdwFileSizeHigh отличен от NULL и функция завершается неудачно, возвращаемое значение — OxFFFFFFFF, и в приложении необходимо вызвать функцию GetLastError, чтобы определить, завершилась ли функция успешно. В следующем примере показано, как должна выполняться обработка ошибок.

Включаемый файл

winbase.h

См. также Пример

GetFUeType, GetFileTime, GetLastErrorВ следующем примере DisplayFileSize определена как функция, которая проверяет тип дескриптора файла. Если это файл на диске, функция определяет и отображает размер файла. Если это файл другого типа, отображается сообщение о том, что файл не находится на диске.

См.    \local-soarces\chapl7\17-10.txt

GetFileTime                               Windows 98   • Windows 2000

Описание

Функция GetFileTime позволяет определить дату и время создания, последнего обращения и последнего изменения файла. В файловой системе FAT время создания и последнего обращения не регистрируются, а в файловых системах HPFS и NTFS эти значения регистрируются.

Синтаксис

BOOL GetFileTime( HANDLE hFile, LPFILETIME IpftCreation, LPFILETIME IpftLastAccess, LPFILETIME IpftLastWrite )

Параметры

hFile

HANDLE. Дескриптор файла, для которого должны быть определены дата и время. Дескриптор файла должен быть создан с правами доступа к файлу GENERIC_READ.

IpftCreation

LPFILETIME. Указатель на структуру FILETIME, которая принимает дату и время создания файла. Этот параметр может быть равен NULL, если для приложения указанная информация не требуется. Определение структуры FILETIME приведено в описании функции CompareFileTime.

IpftLastAccess

LPFILETIME. Указатель на структуру FILETIME, которая принимает дату и время последнего доступа к файлу. Этот параметр может быть равен NULL, если для приложения указанная информация не требуется.

IpftLast Write

LPFILETIME. Указатель на структуру FILETIME, которая принимает дату и время выполнения последней операции записи в файл. Этот параметр может быть равен NULL, если для приложения указанная информация не требуется.

Возвращаемое значение

BOOL. В случае успешного выполнения — TRUE; в ином случае — FALSE.

Включаемый файл

winbase.h

См. также

GetFileSize, GetFileType, SetFileTime

Пример

См. пример для функции FileTimeToLocalFileTime.

GetFileType                               Windows 98   • Windows 2000

Описание

Функция GetFileType возвращает тип файла, который обозначен дескриптором файла.

Синтаксис

DWORD GetFileType( HANDLE hFile )

Параметры

hfile

HANDLE. Дескриптор открытого файла.

Возвращаемое значение

DWORD. Функция возвращает одно из значений, перечисленных в табл.  17.18.

Таблица 17. 18. Возвращаемые значения функции GetFileType

Значение

Описание

FILE_TYPE_CHAR

Файл является символьным файлом; обычно это устройство LPT или консоль.

FILE_TYPE_DISK

Файл является дисковым файлом.

FILE_TYPE_PIPE

Файл является именованным или неименованным каналом.

FILE_TYPE_UNKNOWN

Тип файла неизвестен.

Включаемый файл

winbase.h

См. также

GetFileSize, GetFileTime

Пример

См. пример для функции GetFileSize.

GetFullPathName                        Windows 98   • Windows 2000

Описание

Функция GetFullPathName позволяет определить имя заданного файла и полный путь к нему. Эта функция объединяет имя текущего диска и каталога с указанным именем файла для получения полного пути и имени файла. Она также возвращает адрес имени файла в строке, содержащей полный путь и имя файла. Функция GetFullPathName не проверяет, является ли действительным полученное значение пути и имени файла и обозначает ли оно существующий файл, находящийся на соответствующем томе.

Синтаксис

DWORD GetFullPathName( LPCTSTR IpszFile, DWORD cchPath, LPTSTR IpszPath, LPTSTR* ppszFilePart )

Параметры

IpszFile

LPCTSTR. Указатель на строку с нулевым символом в конце, которая содержит допустимое имя файла.

cchPath

DWORD. Размер буфера для записи имени диска и обозначения пути (в байтах (ANSI) или символах (Unicode)).

IpszPath

LPTSTR Указатель на буфер, который принимает строку с нулевым символом в конце, содержащую имя диска и обозначение пути к файлу.

ppszfilePart

LPTSTR*. Указатель на переменную, которая принимает адрес (в буфере IpszPath) заключительного компонента имени файла в обозначении пути.

Возвращаемое значение

DWORD. В случае успешного выполнения — длина в байтах или символах строки, скопированной в буфер IpszPath. Длина не включает завершающий нулевой символ. Если буфер IpszPath слишком мал, возвращаемое значение — размер (в байтах или символах) буфера, необходимого для размещения обозначения пути. Если функция выполнена неудачно, возвращаемое значение — 0.

Включаемыйфайл

winbase.h

См. также

GetTempPath, SearchPath

Пример

В следующем примере показано, как использовать в приложении функцию GetFullPathName для определения полного пути к файлу. Когда пользователь выбирает пункт меню Test!, в окне сообщения отображается полное имя пути к файлу FILE.DAT.

См.    \local-sources\chapl7\17-ll.txt

GetOverlappedResult                    Windows 98   • Windows 2000

Описание

Функция GetOverlappedResult возвращает результаты перекрывающегося-ввода/вывода в указанном файле, именованном канале или устройстве связи. В Windows 98 эта функция может применяться только для последовательных устройств типа СОМ-портов. Если член HEvenl структуры OVERLAPPED равен NULL, система использует состояние дескриптора hFile для сигнализации о том, что операция закончена. Это не рекомендуется для дескриптора файла, именованного канала или устройства связи. Безопаснее использовать объект события для предотвращения путаницы при одновременном выполнении нескольких операций перекрывающегося ввода/вывода с одним и тем же дескриптором.

Синтаксис

BOOL GetOverlappedResult( HANDLE hFile, LPOVERLAPPED IpOverlapped, LPDWORD IpcbTransfer, BOOL bWait)

Параметры

hFile

HANDLE. Дескриптор файла, именованного канала или устройства связи, где был выполнен перекрывающийся ввод/вывод.

lpOverlapped

LPOVERLAPPED. Указатель на структуру OVERLAPPED, которая была указана при запуске перекрывающегося ввода/вывода. Определение структуры OVERLAPPED приведено в описании функции Read File далее в этой главе.

IpcbTransfer

LPDWORD. Указатель на 32-разрядную переменную, которая принимает число байтов, фактически перемещенных при чтении или записи. Для операции TransactNamedPipe этот параметр содержит число байтов, прочитанных из канала. Для операции ConnectNamedPipe или WaitCommEvent это значение является неопределенным.

bWait

BOOL. Если этот параметр установлен равным TRUE, функция не выполняет возврат, пока операция не будет закончена. Если этот параметр равен FALSE и операция все еще не выполнена, функция BOOL возвращает значение FALSE, а функция GetLastError — значение ERROR_IO_INCOMPLETE.

Возвращаемое значение

BOOL. В случае успешного выполнения — TRUE; в ином случае — FALSE.

Включаемый файл

winbase.h

См. также

CreateEvent, GetLastError, ReadFile, WriteFile

Пример

В следующем примере выполняется запись строки в порт связи "COM2" с использованием перекрывающегося ввода/вывода. Когда пользователь выбирает пункт меню Test!, создается событие и  открывается порт "COM2". В ходе операции перекрывающегося ввода/вывода в порт связи с помощью функции WriteFile отправляется строка "ATDT". Затем в приложении для получения результатов операции применяется функция GetOverlappedResult.

См.    \local-sources\chapl7\17-12.txt

GetStdHandle                            Windows 98   « Winrinw; 7nnn

Описание

Функция GetStdHandle возвращает дескриптор стандартного устройства ввода информации, вывода информации или вывода сообщений об ошибках. В приложениях дескрипторы, возвращенные функцией GetStdHandle, могут использоваться для чтения и записи на консоль. Эти дескрипторы можно применять в функции ReadFile или WriteFile или в любой функции работы с консолью, имеющей доступ к буферу ввода консоли или буферу дисплея, такой как ReadConsolelnput или WriteConsoIe.