- •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
- •Чтение/запись данных в консоль/файл
- •Установка заголовка окна консоли
- •Установка цвета символов и фона в консоли
- •Установка позиции курсора
Функция Sleep
Функция Sleep из библиотеки Kernel32.dll приостанавливает выполнение приложения на указанное количество миллисекунд. Вот её прототип:
VOID Sleep(
DWORD dwMilliseconds // "Время сна" в миллисекундах
);
А вот объявление этой функции в Visual FoxPro:
DECLARE Sleep IN WIN32API Long Milliseconds
Пример вызова функции Sleep из вашего приложения:
FUNCTION ToSleep(tnMilliseconds)
DECLARE Sleep IN WIN32API Long
Sleep(tnMilliseconds)
ENDFUNC
Функции для работы с guid
GUID (Global Unique ID), он же UUID, он же ClsID - глобальный идентификатор, представляющий собой двоичный тип данных длиной 16 байт. Microsoft гарантирует уникальность значения GUID на всей Земле в течение обозримого будущего. В Windows существует достаточное количество функций, генерирующих и преобразующих значения уникальных идентификаторов. Здесь мы рассмотрим три из них:
CoCreateGUID
StringFromGUID2
CLSIDFromString
Эти функции находятся в библиотеке Ole32.dll.
Функция CoCreateGUID генерирует новое значение GUID в виде двоичной строки длиной 16 байт. Вот её прототип:
HRESULT CoCreateGuid(
GUID *pguid // Указатель на строку с GUID
);
Объявление функции в Visual FoxPro:
DECLARE Long CoCreateGuid IN Ole32.dll String @ guid
Функция возвращает ноль при успешном выполнении либо отличное от нуля значение в случае ошибки.
Пример использования функции:
lqGUID = REPLICATE(CHR(0), 16))
nReturn = CoCreateGuid(@lqGUID)
Полученное значение может быть использовано как уникальный индекс. Хранить такие индексы можно в полях таблиц типа Character Binary.
Функция StringFromGUID2 преобразует двоичное значение GUID в его символьное представление, которое, например, может выглядеть так: {c200e360-38c5-11ce-ae62-08002b2b79ef}. Вот её прототип:
int StringFromGUID2(
REFGUID rguid, // Двоичное значение GUID
LPOLESTR lpsz, // Указатель на строку с символьным
// значением GUID (в Unicode)
int cchMax // Количество 16-ти битовых символов в строке
);
Объявление этой функции в Visual FoxPro выглядит так:
DECLARE Long StringFromGUID2 IN Ole32.dll String guid,
String @ unicodeGuid, Integer cchMax
Функция возвращает количество символов, включая нулевой завершающий символ, в случае успешного выполнения, и ноль, если произошла ошибка.
Формируемое функцией символьное представление GUID может быть использовано, например, для формирования веток ClsID в реестре Windows. Ниже показан пример кода функции GuidToString, показывающий применение функции StringFromGUID2. Функция получает двоичное значение уникального идентификатора и возвращает его символьное представление.
FUNCTION GuidToString(tqGuid)
LOCAL unicodeGuid, lnResult
DECLARE Long StringFromGUID2 IN Ole32.dll String, String @, Integer
unicodeGuid = REPLICATE(CHR(0), 80)
lnResult = StringFromGUID2(qGuid, @unicodeGuid, 40)
IF lnResult > 0
RETURN STRCONV(LEFT(unicodeGuid,(lnResult-1)*2,6)
ELSE
RETURN ''
ENDIF
ENDFUNC
Так как функция StringFromGUID2 при работе с символьными строками использует формат Unicode, то применяем функцию STRCONV для конвертирования результата в формат ANSI.
Функция CLSIDFromString преобразует символьное представление уникального идентификатора в двоичную 16-ти байтовую строку. Вот её прототип:
HRESULT CLSIDFromString(
LPOLESTR lpsz, // Указатель на строку с символьным представлением GUID
LPCLSID pclsid // Указатель на строку с двоичным представлением GUID
);
Объявление функции в Visual FoxPro:
DECLARE Long CLSIDFromString IN Ole32.dll String unicodeGuid, String @ qGuid
Функция возвращает ноль при успешном выполнении и отличное от нуля значение в случае ошибки.
Вот пример кода функции StringToGuid, показывающий применение функции CLSIDFromString. Функция получает символьное представление уникального идентификатора и возвращает его двоичное значение:
FUNCTION StringToGuid(tcGuid)
LOCAL lqGUID, lnResult
DECLARE Long StringToGuid IN Ole32.dll String, String @
lqGUID = REPLICATE(CHR(0), 16)
lnResult = StringToGuid(STRCONV(tcGuid,5), @lqGUID)
IF lnResult = 0
RETURN lqGuid
ELSE
RETURN ''
ENDIF
ENDFUNC
