- •0915 “Компьютерная инженерия”специальностей:
- •7.091501 "Компьютерные системы и сети"
- •7.091502 "Системное программирование
- •Оглавление
- •Общие положения
- •1. Получение и вывод информации о вычислительной системе
- •1.1. Цель работы
- •1.2. Указания по подготовке к выполнению лабораторной работы
- •1. 3. Обзор темы работы
- •1. Получение и вывод информации о вычислительной системе
- •Функции и структуры для получения информации о вычислительной системе
- •1.4. Задание на лабораторную работу
- •Контрольные вопросы и задания
- •2. Графический интерфейс пользователя (graphical user interface, gui)
- •2.1. Цель работы
- •2. 2. Указания по подготовке к выполнению лабораторной работы
- •2.3. Обзор темы работы
- •2 .4. Задание на лабораторную работу
- •2.5. Контрольные вопросы и задания
- •3. Программирование интерфейса пользователя и эвм
- •3.1. Цель работы
- •3. 2. Указания по подготовке к выполнению лабораторной работы
- •3. 3. Обзор темы работы
- •Поток необработанного ввода
- •Фрагмент примера для организации работы с клавиатурой
- •3.4. Задание на лабораторную работу
- •3.5. Контрольные вопросы и задания
- •4. Многозадачность и многопоточность
- •4. 1. Цель работы
- •4.2. Указания по подготовке к выполнению лабораторной работы
- •4.3. Обзор темы работы
- •4.4. Задание на лабораторную работу
- •5.5. Контрольные вопросы и задания
- •Список литературы
Функции и структуры для получения информации о вычислительной системе
//Получение информации о системе
VOID GetSystemInfo(
// информация о системе [out]
// Формат структуры SYSTEM_INFO приведен ниже
LPSYSTEM_INFO lpSystemInfo );
// Определение имени компьютера
BOOL GetComputerName(
LPTSTR lpBuffer, // буфер для имени компьютера [in]
LPDWORD lpnSize // размер буфера / длина имени [in/out]
);
// Определение имени компьютера
BOOL GetComputerNameEx(
COMPUTER_NAME_FORMAT NameType, // тип имени [in]
LPTSTR lpBuffer, // буфер для имени компьютера [out]
LPDWORD lpnSize // размер буфера / длина имени [in/out]
);
// Определение имени пользователя
BOOL GetUserName(
LPTSTR lpBuffer, // буфер для имени [out]
LPDWORD nSize // размер буфера [in/out]
);
// Определение имени пользователя
BOOLEAN GetUserNameEx(
EXTENDED_NAME_FORMAT NameFormat, // формат имени [in]
LPTSTR lpNameBuffer, // буфер для имени [out]
PULONG nSize // размер буфера / длина //имени [in/out]
);
// Определение доступных логических дисков (маска) [out]
DWORD GetLogicalDrives(VOID);
DWORD GetLogicalDriveStrings(
DWORD nBufferLength, // длина буфера [in]
LPTSTR lpBuffer // буфер для строки [out]
);
// Определение тппа устройства [out]
UINT GetDriveType(
LPCTSTR lpRootPathName // имя корневого каталога [in]
);
// Определение объема свободного пространства на диске
BOOL GetDiskFreeSpace(
LPCTSTR lpRootPathName, // имя корневого каталога [in]
LPDWORD lpSectorsPerCluster, // число секторов в кластере [out]
LPDWORD lpBytesPerSector, // число байтов в секторе [out]
LPDWORD lpNumberOfFreeClusters, // число свободных кластеров [out]
LPDWORD lpTotalNumberOfClusters // общее число кластеров [out]
);
// Определение объема свободного пространства на диске
BOOL GetDiskFreeSpaceEx(
LPCTSTR lpDirectoryName, // имя каталога [in]
PULARGE_INTEGER lpFreeBytesAvailable, // доступных байтов [out]
PULARGE_INTEGER lpTotalNumberOfBytes, // байтов на диске [out]
PULARGE_INTEGER lpTotalNumberOfFreeBytes // свободных байтов [out]
);
// Получение информации о томе
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]
);
Структуры данных
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;
