Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Топ:
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Интересное:
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Дисциплины:
2017-12-13 | 291 |
5.00
из
|
Заказать работу |
|
|
DWORD nBufferLength, // size of buffer
LPTSTR lpBuffer // drive strings buffer
);
При успешном завершении функция возвращает количество символов скопированных в буфер.
DWORDGetLogicalDrives(VOID);
Двойное слово, которое возвращает эта функция, фактически является логической шкалой, нулевой бит в которой соответствует диску А, первый бит - В и так далее.
Для более подробной информации о дисках Windows предоставляет следующую функцию:
BOOL GetVolumeInformation(
LPCTSTR lpRootPathName, // root directory
LPTSTR lpVolumeNameBuffer, // volume name buffer
DWORD nVolumeNameSize, // length of name buffer
LPDWORD lpVolumeSerialNumber, // volume serial number
LPDWORD lpMaximumComponentLength, // maximum file name length
LPDWORD lpFileSystemFlags, // file system options
LPTSTR lpFileSystemNameBuffer, // file system name buffer
DWORD nFileSystemNameSize) // length of file system name buffer
);
Для получения информации о разбивке тома, а также о свободном пространстве на диске предусмотрена функция
BOOL GetDiskFreeSpace(
LPCTSTR lpRootPathName, // root path
LPDWORD lpSectorsPerCluster, // sectors per cluster
LPDWORD lpBytesPerSector, // bytes per sector
LPDWORD lpNumberOfFreeClusters, // free clusters
LPDWORD lpTotalNumberOfClusters // total clusters);
Для получения полной информации о файле используется функция:
BOOL GetFileInformationByHandle(HANDLE hFile, // handle to file LPBY_HANDLE_FILE_INFORMATION lpFileInformation // buffer );
Второй аргумент этой функции является указателем на структуру типа BY_HANDLE_FILE_INFORMATION, которая заполняется этой функцией. Структура описана в файле winbase.h. Это описание выглядит следующим образом:
Typedefstruct_BY_HANDLE_FILE_INFORMATION{
DWORD dwFileAttributes;
FILETIME ffCreationTime;
FILETIME ffLastAccessTime;
FILETIME ffLastWriteTime;
DWORD dwVolumeSerialNumber;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD nNumberOfLinks
DWORD nFileIndexHigh
DWORD nFileIndexLow
} BY_HANDLE_FILE_INFORMATION,
*PBY_HANDLE_FILE_INFORMATION,
*LBY_HANDLE_FILE_INFORMATION
Ниже приведено описание полей
§ Атрибуты файла;
§ Время создания файла;
§ Время последнего доступа к файлу;
§ Время последней записи в файл;
§ Серийный номер тома, на котором находится файл;
|
§ Старшие тридцать два разряда размера файла;
§ младшие тридцать два разряда размера файла;
§ число ссылок на файл
§ старшие тридцать два разряда идентификатора файла
§ младшие тридцать два разряда идентификатора файла
Для получения отдельной информации о файле служат следующие функции, по названию которых можно определить, какую информацию они возвращают:
DWORD GetFileAttributes(LPCTSTR lpFilname // name of file or directory );
DWORD GetFileSize(HANDLE hFile, // handle to file
LPDWORD lpFileSizeHigh // high-order word of file size );
BoolGetFileTime(
HANDLE hFile,
LPFILETIME lpCreationTime, // creation time
LPFILETIME lpLastAccessTime, // last access time
LPFILETIME lpLastWriteTime // last write time );
Запись информации в файл и чтение информации из файла.
Существует два режима чтения и записи файлов: синхронный и асинхронный. При синхронном вводе-выводе процесс выборки данных выглядит следующим образом:
1. Программист выделяет в памяти буфер определенного размера.
2. Программист открывает файл, к которому он намерен обращаться.
3. Программист устанавливает указатель файла на то место в файле, где находятся интересующие его данные.
4. Данные из файла считываются в буфер.
5. В буфере производятся определенные действия.
6. Буфер записывается на то же место в файле или добавляется в конец файла.
Естественно, что в реальной ситуации те или иные шаги могут быть опущены. Так, в данном курсовом проекте был пропущен пункт 6.
Прежде чем считывать информацию из файла или записывать информацию в файл, нам необходимо сначала его открыть. Для этого нам необходимо воспользоваться функцией CreateFile:
HANDLECreateFile(LPCTSTRlpFileName, // filename
DWORD dwDesiredAccess, // access mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurtityAttributes, // SD
DWORD dwCreationDisposition, // how to create
DWORD dwFlagsAttributes, // file attributes
HANDLE hTemplateFile // handle to template file );
Четвертый параметр lpSecurityAttributes, заслуживает особого разговора о нем. Он представляет собой указатель на структуру SECURITY_ATTRIBUTES, которая в файле winbase.h описана так:
typedefstruct_SECURITY_ATTRIBUTES{
DWORD nLendgth;
LPVOID lpSecurityDescriptor;
BOOL bInheritHandle;
}SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,
*LPSECURITY_ATTRIBUTES;
Если никакой особой защиты файлу не требуется, то в это поле можно занести NULL.
|
Открыв файл нам в конце программы нужно обязательно закрыть его. Для того чтобы закрыть файл нам необходимо вызвать функцию CloseHandle:
BOOL CloseHandle(
HANDLE hObject // handle to object
);
Чтение данных из файла в синхронном режиме осуществляется с помощью функции ReadFile:
BOOL ReadFile(
HANDLE hFile, // handle to file
LPVOID lpBuffer, // data buffer
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // number of bytes read
LPOVERLAPPEDlpOverlapped // overlappedbuffer
);
Для того чтобы осуществить запись данных в файл предназначена функция:
BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped);
Перед тем как начать описание асинхронного режима чтения и записи файлов, необходимо обратить внимание на то, что асинхронный ввод-вывод в Windows’95/98 не работает, если, конечно, речь не идет о работе с последовательным портом.
Для того, чтобы осущсвить асинхронный доступ к файлу, мы должны открыть файл при помощи функции CreateFile и указать в аргументе dwflagsattributes флаг FILE_FLAG_OVERLAPPED, который укажет, что файл будет открыт именно для асинхронного доступа к данным.
Кроме этого, в данном случае, в отличие от операций, производимых в синхронном режиме, мы должны использовать структуру типа OVERLAPPED. В файле winbase.h эта структура описана следующим образом:
typedefstruct_OVERLAPPED{
DWORD Internal;
DWORD InternalHigh;
DWORD Offset;
DWORD OffsetHigh;
HANDLE hEvent;
}OVERLAPPED,*LPOVERLAPPED;
Специально для асинхронного ввода-вывода предназначены функции ReadFile и WriteFile. Я не буду подробно останавливаться на этих функциях, так как в данном курсовом проекте используется синхронный ввод данных.
|
|
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!