Лабораторная работа №15 / LR_1
.DOCЛабораторная работа 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;