- •ОПЕРАЦИОННЫЕ
- •Лабораторная работа №1. Функции получения системной информации
- •Задание
- •Начинаем с определения и структуры работы
- •Пути получения имени компьютера
- •Примерный результат работы
- •Получение версии Windows
- •2.1. GetVersion()
- •2.2. GetVersionEx()
- •Версии Windows
- •4. Из реестра
- •Лабораторная работа №2.
- •Как делать
- •switch (pressedKey)
- •Результат работы
- •Лабораторная работа №3. Методы синхронизация потоков
- •Синхронизация
- •Межпроцессное
- •Используемые средства синхронизации
- •Критическая секция
- •Мьютексы
- •Пример. Критическая секция
- •Результат
- •Пример. Мьютекс
- •Пример. События
- •Результат
- •Лабораторная работа №4. Архитектура памяти Windows
- •Подзадача: вывод информации
- •Получение информации о памяти
- •Результат
- •Карта памяти
ОПЕРАЦИОННЫЕ
СИСТЕМЫ
Лабораторный практикум Рекомендации по выполнению работ (для заочного обучения)
Лабораторная работа №1. Функции получения системной информации
■Цель работы: получение практических навыков по программированию в Win32 API:
–Консольное? Окна?
–Программирование на с++?
–Программирование на другом ЯП?
■С#
■Python
Задание
■Разработанное программное обеспечение приложения, обеспечивающего получение следующей системной информации:
–Имя компьютера, имя пользователя;
–Пути к системным каталогам Windows;
■Версия операционной системы;
■Системные метрики (не менее 2 метрик);
■Системные параметры (не менее 2 параметров);
■Системные цвета (определить цвет для некоторых символьных констант и изменить его на любой другой);
■Функции для работы со временем;
■4 дополнительные API-функции
Начинаем с определения и структуры работы
■Windows application programming interfaces – программный интерфейс пользовательского режима для ОС семейства Windows
■В настоящее время термин Windows API может относитьсяПриложение 32-разрядным, так и 64-разрядным программным
Windows
■Создание классических приложений для компьютеров с Windows https:// API developer.microsoft.com/en-us/windows/desktop/develop
■ Идея: последовательно вызывать функции для получения |
|
информации о системе |
ОС Windows |
|
Пути получения имени компьютера
• Использовать winapi
• Использовать класс Environment
Функция из методички
BOOL GetComputerName(
LPTSTR IpBuffer, // Адрес буфера имени.
LPDWORD nSize // Размер буфера имени.
);
Примерный результат работы
Получение версии Windows
1.Средствами языка (C#)
2.С использованием API-функций:
GetVersion()
GetVersionEx()
3.Командой ver из командной строки Windows
4.Из реестра
1.
Environment.OSVersion.VersionString
Environment - Класс
OSVersion - Свойство
OperatingSystem -
Класс
VersionString -
Свойство
Предоставляет сведения о текущей среде и платформе, а также необходимые для управления ими средства.
Возвращает объект OperatingSystem, который содержит идентификатор текущей платформы и номер версии.
Предоставляет информацию об операционной системе, например версию и идентификатор платформы.
Возвращает объединенную строку, в которой представлен идентификатор платформы, версия и пакет обновления, установленный в данный момент в операционной системе.
2.1. GetVersion()
|
OSVERSIONINFOEXA |
|
||||
{ |
structureC++: |
|
|
private struct OSVERSIONINFOEX { |
C#: |
|
|
|
|||||
typedef |
OSVERSIONINFOEXA |
|
[StructLayout(LayoutKind.Sequential)] |
|
||
1. |
DWORD dwOSVersionInfoSize; |
1. |
public int dwOSVersionInfoSize; |
|
||
2. |
DWORD dwMajorVersion; |
2. |
public uint dwMajorVersion; |
|
||
3. |
DWORD dwMinorVersion; |
3. |
public uint dwMinorVersion; |
|
||
4. |
DWORD dwBuildNumber; |
4. |
public uint dwBuildNumber; |
|
||
5. |
DWORD dwPlatformId; |
5. |
public uint dwPlatformId; |
|
||
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst |
|
6. |
CHAR szCSDVersion[128]; |
|
|
= 128)] |
|
|
6. |
public string szCSDVersion; |
|
||||
7. |
WORD wServicePackMajor; |
|
||||
7. |
public UInt16 wServicePackMajor; |
|
||||
8. |
WORD wServicePackMinor; |
|
||||
8. |
public UInt16 wServicePackMinor; |
|
||||
9. |
WORD wSuiteMask; |
|
||||
9. |
public UInt16 wSuiteMask; |
|
||||
10. |
BYTE wProductType; |
|
||||
10. |
public byte wProductType; |
|
||||
11. |
BYTE wReserved; |
|
||||
11. |
public byte wReserved; |
|
||||
} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, |
|
|||||
|
|
} |
|
|||
|
*LPOSVERSIONINFOEXA; |
|
|
|