Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!1-25.doc
Скачиваний:
11
Добавлен:
28.10.2018
Размер:
2.62 Mб
Скачать

16.1 Работа с файлами в Win32.

1) GetLogicalDrives.Для выяснения того, какие логические диски существуют в системе, используется функцияDWORD GetLogicalDrives( VOID); Каждый установленный бит возвращаемого значения соответствует существующему в системе логическому устройству. Например, если в системе существуют диски A:, C: и D:, то возвращаемое функцией значение равно 13 (1101).

2) GetLogicalDriveStrings.

Функция DWORD GetLogicalDriveStrings( DWORD nBufferLength, LPTSTR lpszBuffer);

заполняет lpszBuffer информацией о корневом каталоге каждого логического диска в системе. Например, если в системе существуют диски A:, C: и D:, то буфер будет заполнен символами A:\<null>C:\<null>D:\<null><null>

параметр nBufferLength определяет длину буфера. Функция возвращает реальную длину буфера, необходимую для размещения всей информации. Если необходимая длина буфера заранее неизвестна, то можно воспользоваться следующим классическим приемом: DWORD dw = GetLogicalDrivesStrings( 0, NULL ) ; LPSTR lpDriveStrings = HeapAlloc( GetProcessHeap(), 0, dw*sizeof(TCHAR));

GetLogicalDrivesStrings( dw, lpDriveStrings );

3) GetDriveType. Для определения типа диска предназначена функция UINT GetDriveType( LPTSTR lpszRootPathName ); В качестве параметра ей передается символическое имя корневого каталога (напр. A:\\), а возвращаемое значение может быть одним из: DRIVE_UNKNOWN, DRIVE_NO_ROOT_DIR, DRIVE_REMOVABLE, DRIVE_FIXED, DRIVE_REMOTE, DRIVE_CDROM, DRIVE_RAMDISK.

4) GetVolumeInformation возвращает информацию о файловой системе и дисках (директориях ).

BOOL GetVolumeInformation(

LPCTSTR lpRootPathName, // имя диска(директории) [in]

LPTSTR lpVolumeNameBuffer, // название диска [out]

DWORD nVolumeNameSize, // длина буфера названия диска[in]

LPDWORD lpVolumeSerialNumber, // сериальный номер диска [out]

LPDWORD lpMaximumComponentLength, // максимальная длина файла[out]

LPDWORD lpFileSystemFlags, // опции файловой системы [out]

LPTSTR lpFileSystemNameBuffer, // имя файловой системы [out]

DWORD nFileSystemNameSize // длина буфера имени файл.сист.[in] );

5) GetDiskFreeSpaceEx. сообщает информацию о размерах сектора и кластера и о наличии свободных кластеров. BOOL GetDiskFreeSpaceEx(

LPCTSTR lpDirectoryName, // имя диска(директории) [in]

PULARGE_INTEGER lpFreeBytesAvailable,// доступно для использования(байт) [out]

PULARGE_INTEGER lpTotalNumberOfBytes, // максимальный объём( в байтах ) [out]

PULARGE_INTEGER lpTotalNumberOfFreeBytes // свободно на диске( в байтах )[out] );

6) GlobalMemoryStatus. возвращает информацию о используемой системой памяти.

VOID GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer // указатель на структуру MEMORYSTATUS);

typedef struct _MEMORYSTATUS {

DWORD dwLength; // длина структуры в байтах

DWORD dwMemoryLoad; // загрузка памяти в процентах

SIZE_T dwTotalPhys; // макс. количество физической памяти в байтах

SIZE_T dwAvailPhys; // свободное количество физич. памяти в байтах

SIZE_T dwTotalPageFile; // макс. кол. памяти для программ в байтах

SIZE_T dwAvailPageFile; // свободное кол. памяти для программ в байтах

SIZE_T dwTotalVirtual; // макс. количество виртуальной памяти в байтах

SIZE_T dwAvailVirtual; // свободное количество виртуальной памяти в байтах

} MEMORYSTATUS, *LPMEMORYSTATUS; Эта функция не возвращает параметров