- •1. Поняття ос, її призначення та функції.
- •1. Понятие операционной системы. Назначение, состав и функции операционных систем.
- •2. Історія розвитку ос. Класифікація сучасних ос.
- •3. Основные принципы построения ос.
- •4. Операционные оболочки.
- •5. Драйверы и утилиты.
- •6. Процессы. Определение процесса. Классификация процессов ос.
- •4. Функциональные компоненты ос. Общая характеристика
- •7. Ресурсы. Определение ресурса. Классификация ресурсов ос.
- •3. Функціональні компоненти ос.
- •5. Требования к современным ос
- •4. Ядро ос. Привілейований режим і режим користувача. Системний виклик.
- •Рхитектура ос
- •Ядро и вспомогательные модули ос
- •Ядро в привилегированном режиме
- •Микроядерная архитектура
- •Тенденции в структурном построении ос
- •Монолитные системы
- •Многоуровневые системы
- •6. Ос та її оточення. Взаємодія ос і апаратного забезпечення. Засоби апаратної підтримки ос
- •Взаимодействие с аппаратным обеспечением
- •По сфере применения[править | править вики-текст]
- •Содержание
- •Описание и использование интерфейсов[править | править вики-текст]
- •Интерфейсы и абстрактные классы[править | править вики-текст]
- •Множественное наследование и реализация интерфейсов[править | править вики-текст]
- •8. Особливості архітектури Windows. Компоненти режиму ядра. Компоненти режиму користувача. Архитектура Windows nt
- •Режим пользователя[править | править вики-текст]
- •Режим ядра[править | править вики-текст]
- •9. Процеси і потоки в сучасних ос. Складові елементи процесів і потоків. Багатопотоковість. Стани процесів і потоків. Поток выполнения
- •Отличие от процессов[править | править вики-текст]
- •Многопоточность[править | править вики-текст]
- •10. Інтерфейс Windows api. Версії Windows api. Категорії функцій Windows api.
- •Содержание
- •Общие сведения[править | править вики-текст]
- •Содержание
- •Api как средство интеграции приложений[править | править вики-текст]
- •Сигнатура функции[править | править вики-текст]
- •Семантика функции[править | править вики-текст]
- •Api операционных систем. Проблемы, связанные с многообразием api[править | править вики-текст]
- •Структура security_attributes
- •Возвращаемые значения
- •Замечания
- •Содержание
- •Общие сведения[править | править вики-текст]
- •Секреты многопоточности: изучаем модульное тестирование в сфере мобильного программинга
- •Объект ядра Событие
- •Объект ядра Мьютекс
- •Пример работы Mutex
- •Объект ядра Семафор (semaphore)
- •Критические секции
- •Атомарные операции
- •Заключение
- •15. Потоки. Функція CreateThread. Завершення потоку. Зміна класу пріоритету процесу. Установка відносного пріоритету потоку.
- •17. Робота з файлами, каталогами і дисками в Win32. Отримання інформації про диски, вільний простір.
- •18. Функція CreateFile та її параметри. Функция CreateFile
- •Коммуникационные ресурсы
- •19. Функції Windows api для пошуку файлів. Применение функций Windows api
- •Функции LoadKeyboardLayout и UnloadKeyboardLayout
- •Функция GetLocalTime
- •Функция GetTickCount
- •Функция GlobalMemoryStatus
- •Функция Sleep
- •Функции для работы с guid
- •Функция ShellExecute
- •Функция shFileOperation
- •20. Функції Windows api для читання даних з файлу та запису в файл. Синхронні і асинхронні операції з файлами. Функции api для работы с консолью
- •Использование русского языка в консоли с помощью api
- •Чтение/запись данных в консоль/файл
- •Установка заголовка окна консоли
- •Установка цвета символов и фона в консоли
- •Установка позиции курсора
20. Функції Windows api для читання даних з файлу та запису в файл. Синхронні і асинхронні операції з файлами. Функции api для работы с консолью
Программирование > Создание Windows-приложений > Функции API для работы с консолью
Для начала работы с консолью необходимо получить ее дескриптор.
Функция получения дескриптора стандартного устройства ввода, вывода или ошибки в зависимости от переданного константного параметра: HANDLE WINAPI GetStdHandle(__in DWORD nStdHandle);
nStdHandle может принимать значения
STD_INPUT_HANDLE = -10; // устройство ввода
STD_OUTPUT_HANDLE = -11; // устройство вывода
STD_ERROR_HANDLE = -12; // ошибка
Использование русского языка в консоли с помощью api
Для указания кодовой страницы используются функции
Кодовая страница консоли вывода BOOL WINAPI SetConsoleOutputCP(UINT wCodePageID);
Кодовая страница консоли ввода BOOL WINAPI SetConsoleCP(UINT wCodePageID);
где wCodePageID - номер кодовой страницы. Для перекодировки на русский язык используется кодовая страницаwCodePageID=1251.
Для перекодировки русского текста, введенного в Win-коде также может использоваться функция BOOL WINAPI CharToOem(LPCTSTR lpszSrc, LPSTR lpszDst)
lpszSrc – указатель на строку-источник;
lpszDst/strong> – указатель на строку-приемник
Возвращаемое значение 1 в случае успешной перекодировки.
Чтение/запись данных в консоль/файл
Для чтения и записи данных в консоль используются функции
Чтение данных BOOL WINAPI ReadFile( _In_ HANDLE hFile, _Out_ LPVOID lpBuffer, _In_ DWORD nNumberOfBytesToRead, _Out_ LPDWORD lpNumberOfBytesRead, _Inout_ LPOVERLAPPED lpOverlapped);
Запись данных BOOL WINAPI WriteFile( _In_ HANDLE hFile, _In_ LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_ LPDWORD lpNumberOfBytesWritten, _Inout_ LPOVERLAPPED lpOverlapped);
В случае успешного завершения функции возвращают ненулевое значение. Аргументы функций
hFile -дескриптор файла/консоли. Файл/консоль должен иметь доступ для чтения для функции ReadFile() и доступ для записи для функцииWriteFile().
lpBuffer - указатель на буфер (строку) для чтения/записи данных.
nNumberOfBytesToWrite - число байтов, которые будут записаны в файл.
lpNumberOfBytesWritten - указатель на переменную, которая получает число считанных/записанных байтов.
lpOverlapped - указатель на структуру OVERLAPPED, которая используется в операциях асинхронного ввода-вывода (например, получение данных по интерфейсу связи). Для синхронного ввода-вывода данный указатель имеет значение NULL.
Установка заголовка окна консоли
Функция установки заголовка окна консоли BOOL WINAPI SetConsoleTitle(__in LPCTSTR lpConsoleTitle); lpConsoleTitle – указатель на строку имени консоли с завершающим нуль-символом
Установка цвета символов и фона в консоли
Цвет символов и фона задается с помощью констант, определяющих тетрады символов. Цвет символов
FOREGROUND_BLUE = 0x01
FOREGROUND_GREEN = 0x02
FOREGROUND_RED = 0x04
FOREGROUND_INTENSITY = 0x08
Фон символов
BACKGROUND_BLUE = 0x10
BACKGROUND_GREEN = 0x20
BACKGROUND_RED = 0x40
BACKGROUND_INTENSITY = 0x80
Каждая тетрада, определяющая цвет символов или фона, представляет собой значение от 0 до 15, задаваемая логической суммой соответствующих констант:
Например, цвет символов с кодом 13 задается как
FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY.
Функция определения атрибутов вводимых символов в окне консоли BOOL WINAPI SetConsoleTextAttribute( __in HANDLE hConsoleOutput, __in WORD wAttributes);
hConsoleOutput – дескриптор буфера консоли вывода;
wAttributes – цвет букв и фона, получаемый путем комбинации констант
Функция, задающая цвет фона консоли(путем закрашивания фона отдельных символов) BOOL WINAPI FillConsoleOutputAttribute( __in HANDLE hConsoleOutput, __in WORD wAttribute, __in DWORD nLength, __in COORD dwWriteCoord, __out LPDWORD lpNumberOfAttrsWritten);
hConsoleOutput – дескриптор буфера вывода консоли; wAttribute – атрибут цвета фона символа в консоли;
nLength – количество ячеек символов, фон которых устанавливается заданным цветом;
dwWriteCoord – координаты первой закрашиваемой ячейки;
lpNumberOfAttrsWritten – указатель на идентификатор, в который записывается количество реально закрашенных ячеек.
Для того чтобы изменить цвет всего окна консоли необходимо задать цвет символов, количество которых определяется размером окна консоли. Размер стандартного окна консоли 80x25 = 2000 символов.
