DWORD GetLogicalDriveStrings( — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

DWORD GetLogicalDriveStrings(

2017-12-13 291
DWORD GetLogicalDriveStrings( 0.00 из 5.00 0 оценок
Заказать работу

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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.016 с.