Скачиваний:
16
Добавлен:
01.05.2014
Размер:
62.46 Кб
Скачать

Лабораторная работа 1. Получение информации о вычислительной системе

Цель работы. Разработать приложение, выводящее информацию о системе и о дисках, установленных на компьютере

    1. Возможности программы:

  • вывод информации о системе,

  • вывод списка дисков,

  • по запросу вывод информации о произвольном из присутствующих в системе диске.

    1. Используемые функции Win32 API:

Таблица вариантов

Вар.01

Вар.02

Вар.03

Вар.04

Вар.05

Вар.06

Вар.07

Вар.08

Вар.09

Вар.10

GetSystemInfo

+

+

+

+

+

+

+

+

+

+

GetComputerName

+

+

+

+

+

GetUserName

+

+

+

+

+

GetLogicalDrives

Максимальное число логических дисков

+

7

+

9

+

11

+

13

+

15

GetLogicalDriveStrings

Максимальное число логических дисков

+

8

+

10

+

12

+

14

+

16

GetDriveType

+

+

+

+

+

GetDiskFreeSpace

+

+

+

+

+

GetVolumeInformation

+

+

+

+

+

Вар.11

Вар.12

Вар.13

Вар.14

Вар.15

Вар.16

Вар.17

Вар.18

Вар.19

Вар.20

GetSystemInfo

+

+

+

+

+

+

+

+

+

+

GetComputerName

+

+

+

+

+

GetUserName

+

+

+

+

+

GetLogicalDrives

Максимальное число логических дисков

+

17

+

19

+

21

+

23

+

25

GetLogicalDriveStrings

Максимальное число логических дисков

+

18

+

20

+

22

+

24

+

26

GetDriveType

+

+

+

+

+

GetDiskFreeSpace

+

+

+

+

+

GetVolumeInformation

+

+

+

+

+

Приложение 1. Функции и структуры для получения информации о вычислительной системе

VOID GetSystemInfo( //Получение информации о системе

LPSYSTEM_INFO lpSystemInfo // system information - информация о системе [out]

);

BOOL GetComputerName( // Определение имени компьютера

LPTSTR lpBuffer, // computer name – буфер для имени компьютера [in]

LPDWORD lpnSize // size of name buffer – размер буфера / длина имени [in/out]

);

BOOL GetComputerNameEx( // Определение имени компьютера

COMPUTER_NAME_FORMAT NameType, // name type – тип имени [in]

LPTSTR lpBuffer, // name buffer – буфер для имени компьютера [out]

LPDWORD lpnSize // size of name buffer– размер буфера / длина имени [in/out]

);

BOOL GetUserName( // Определение имени пользователя

LPTSTR lpBuffer, // name buffer – буфер для имени [out]

LPDWORD nSize // size of name buffer - размер буфера [in/out]

);

BOOLEAN GetUserNameEx( // Определение имени пользователя

EXTENDED_NAME_FORMAT NameFormat, // name format – формат имени [in]

LPTSTR lpNameBuffer, // name buffer – буфер для имени [out]

PULONG nSize // size of name buffer – размер буфера / длина имени [in/out]

);

DWORD GetLogicalDrives(VOID); // Определение доступных логических дисков (маска) [out]

DWORD GetLogicalDriveStrings( // Определение доступных логических дисков (строка) [out]

DWORD nBufferLength, // size of buffer - длина буфера [in]

LPTSTR lpBuffer // drive strings buffer - буфер для строки [out]

);

UINT GetDriveType( // Определение тппа устройства [out]

LPCTSTR lpRootPathName // root directory – имя корневого каталога [in]

);

BOOL GetDiskFreeSpace( // Определение объема свободного пространства на диске

LPCTSTR lpRootPathName, // root path – имя корневого каталога [in]

LPDWORD lpSectorsPerCluster, // sectors per cluster – число секторов в кластере [out]

LPDWORD lpBytesPerSector, // bytes per sector – число байтов в секторе [out]

LPDWORD lpNumberOfFreeClusters, // free clusters – число свободных кластеров [out]

LPDWORD lpTotalNumberOfClusters // total clusters – общее число кластеров [out]

);

BOOL GetDiskFreeSpaceEx( // Определение объема свободного пространства на диске

LPCTSTR lpDirectoryName, // directory name– имя каталога [in]

PULARGE_INTEGER lpFreeBytesAvailable, // bytes available to caller – доступных байтов [out]

PULARGE_INTEGER lpTotalNumberOfBytes, // bytes on disk – байтов на диске [out]

PULARGE_INTEGER lpTotalNumberOfFreeBytes // free bytes on disk - свободных байтов [out]

);

BOOL GetVolumeInformation( // Получение информации о томе

LPCTSTR lpRootPathName, // root directory –имя корневого каталога [in]

LPTSTR lpVolumeNameBuffer, // volume name buffer – буфер для имени тома [out]

DWORD nVolumeNameSize, // length of name buffer – длина буфера [in]

LPDWORD lpVolumeSerialNumber, // volume serial number – серийный номер тома [out]

LPDWORD lpMaximumComponentLength, // maximum file name length – макс.длина имени тома [out]

LPDWORD lpFileSystemFlags, // file system options – флаги файловой системы (ФС) [out]

LPTSTR lpFileSystemNameBuffer, // file system name buffer – буфер для имени ФС [out]

DWORD nFileSystemNameSize // length of file system name buffer – длина буфера для имени ФС [in]

);

Структуры данных

typedef struct _SYSTEM_INFO {

DWORD dwOemId;

struct {

WORD wProcessorArchitecture; // архитектура процессора

WORD wReserved;

}

DWORD dwPageSize; // размер страницы памяти

LPVOID lpMinimumApplicationAddress; // нижняя граница доступного адресного пространства

LPVOID lpMaximumApplicationAddress; // верхняя граница доступного адресного пространства

DWORD dwActiveProcessorMask; // маска активности процессоров

DWORD dwNumberOfProcessors; // число процессоров

DWORD dwProcessorType; // тип процессора

DWORD dwAllocationGranularity; // гранулярность резервирования регионов памяти

WORD wProcessorLevel; // уровень процессора

WORD wProcessorRevision; // дополнительная информация о процессоре

} SYSTEM_INFO, +LPSYSTEM_INFO;