Ru/api/kernel: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
No edit summary
Line 220: Line 220:


== Функция 49 - Advanced Power Management (APM). ==
== Функция 49 - Advanced Power Management (APM). ==
Описание функции перенесено в отдельную статью: [[SysFn49/ru|Функция 49]]


== Функция 50 - установка формы окна. ==
== Функция 50 - установка формы окна. ==


Обычные окна представляют собой прямоугольники. С помощью этой функции
Описание функции перенесено в отдельную статью: [[SysFn50/ru|Функция 50]]
окну можно придать произвольную форму. Форма задаётся набором точек
внутри обрамляющего прямоугольника, принадлежащих окну. Положение и
размеры обрамляющего прямоугольника задаются функцией 0 и изменяются
функцией 67.
 
=== Установка данных с информацией о форме ===
Параметры:
  * eax = 50 - номер функции
  * ebx = 0 - номер подфункции
  * ecx = указатель на данные формы (массив байт 0/1)
Возвращаемое значение:
  * функция не возвращает значения
 
=== Установка масштаба данных формы ===
Параметры:
  * eax = 50 - номер функции
  * ebx = 1 - номер подфункции
  * ecx задаёт масштаб: каждый байт данных определяет
    (2^scale)*(2^scale) пикселей
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Масштаб по умолчанию равен 0 (масштабирующий множитель 1). Если в
    данных формы один байт соответствует одному пикселю, то масштаб
    можно не устанавливать.
  * Обозначим xsize = ширина окна (в пикселях), ysize = высота;
    обратите внимание, что они на единицу больше, чем устанавливаемые
    функциями 0, 67.
  * По определению масштаба xsize и ysize должны делиться на 2^scale.
  * Байт данных по смещению a должен быть 0/1 и
    определяет принадлежность окну квадрата со стороной 2^scale
    (при scale=0 получаем пиксель) и координатами левого верхнего угла
    (a mod (xsize shr scale), a div (xsize shr scale))
  * Размер данных: (xsize shr scale)*(ysize shr scale).
  * Данные должны присутствовать в памяти и не меняться
    после установки формы.
  * Система просматривает данные о форме при каждой перерисовке окна
    функцией 0.
  * Вызов подфункции 0 с нулевым указателем приводит к возврату
    к прямоугольной форме.
 


== Функция 51 - создать поток. ==
== Функция 51 - создать поток. ==


Параметры:
Описание функции перенесено в отдельную статью: [[SysFn51/ru|Функция 51]]
  * eax = 51 - номер функции
  * ebx = 1 - единственная подфункция
  * ecx = адрес точки входа потока (начальный eip)
  * edx = указатель стэка потока (начальный esp)
Возвращаемое значение:
  * eax = -1 - ошибка (в системе слишком много потоков)
  * иначе eax = TID - идентификатор потока
 
 
== Функция 52, подфункция 0 - получить конфигурацию сетевого драйвера. ==
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 0 - номер подфункции
Возвращаемое значение:
  * eax = двойное слово конфигурации
Замечания:
  * Слово конфигурации можно установить подфункцией 2.
  * Ядро не использует соответствующую переменную.
    Ценность этой переменной и работающих с ней подфункций 0 и 2
    представляется сомнительной.
 
 
=== Подфункция 1 - получить локальный IP-адрес. ===
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 1 - номер подфункции
Возвращаемое значение:
  * eax = IP-адрес (4 байта)
Замечания:
  * Локальный IP-адрес устанавливается подфункцией 3.
 
 
=== Подфункция 2 - установить конфигурацию сетевого драйвера. ===
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 2 - номер подфункции
  * ecx = двойное слово конфигурации; если младшие 7 бит образуют
    число 3, это воспринимается как запрос на [пере-]инициализацию
    Ethernet-карты, в противном случае Ethernet выключается
Возвращаемое значение:
  * если не запрошен Ethernet-интерфейс, то возвращается eax=2,
    но это может измениться в будущих версиях ядра
  * если запрошен Ethernet-интерфейс, то eax=0 означает ошибку
    (отсутствие Ethernet-карты), а ненулевое значение - успех
Замечания:
  * Слово конфигурации можно прочитать подфункцией 0.
  * Ядро не использует соответствующую переменную.
    Ценность этой переменной, подфункции 0 и части подфункции 2,
    устанавливающей эту переменную, представляется сомнительной.
 
 
=== Подфункция 3 - установить локальный IP-адрес. ===
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 3 - номер подфункции
  * ecx = IP-адрес (4 байта)
Возвращаемое значение:
  * текущая реализация возвращает eax=3, но это может быть изменено
    в будущих версиях
Замечания:
  * Локальный IP-адрес можно получить подфункцией 1.
 
 
=== Подфункция 6 - добавить данные в стек входной очереди. ===
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 6 - номер подфункции
  * edx = размер данных
  * esi = указатель на данные
Возвращаемое значение:
  * eax = -1 - ошибка
  * eax = 0 - успешно
Замечания:
  * Эта функция предназначена только для медленных сетевых драйверов
    (PPP, SLIP).
  * Размер данных не должен превосходить 1500 байт,
    хотя проверок корректности не делается.
 
 
=== Подфункция 8 - прочитать данные из сетевой очереди вывода. ===
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 8 - номер подфункции
  * esi = указатель на буфер размером 1500 байт
Возвращаемое значение:
  * eax = число прочитанных байт (в текущей реализации
    либо 0 = нет данных, либо 1500)
  * данные скопированы в буфер
Замечания:
  * Эта функция предназначена только для медленных сетевых драйверов
    (PPP, SLIP).
 
 
=== Подфункция 9 - получить gateway IP. ===
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 9 - номер подфункции
Возвращаемое значение:
  * eax = gateway IP (4 байта)
 
 
=== Подфункция 10 - получить маску подсети. ===
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 10 - номер подфункции
Возвращаемое значение:
  * eax = маска подсети
 
 
=== Подфункция 11 - установить gateway IP. ===
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 11 - номер подфункции
  * ecx = gateway IP (4 байта)
Возвращаемое значение:
  * текущая реализация возвращает eax=11, но это может быть изменено
    в будущих реализациях
 
 
=== Подфункция 12 - установить маску подсети. ===
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 12 - номер подфункции
  * ecx = маска подсети
Возвращаемое значение:
  * текущая реализация возвращает eax=12, но это может быть изменено
    в будущих версиях
 
 
=== Подфункция 13 - получить DNS IP. ===
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 13 - номер подфункции
Возвращаемое значение:
  * eax = DNS IP (4 байта)
 
 
=== Подфункция 14 - установить DNS IP. ===
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 14 - номер подфункции
  * ecx = DNS IP (4 байта)
Возвращаемое значение:
  * текущая реализация возвращает eax=14, но это может быть изменено
    в следующих версиях
 
 
=== Подфункция 15 - получить локальный MAC-адрес. ===
 
Параметры:
  * eax = 52 - номер функции
  * ebx = 15 - номер подфункции
  * ecx = 0 - читать первые 4 байта,
    ecx = 4 - читать последние 2 байта
Возвращаемое значение:
  * для ecx=0: eax = первые 4 байта MAC-адреса
  * для ecx=4: ax = последние 2 байта MAC-адреса,
              старшая половина eax разрушается
  * для других ecx: eax = -1 как признак ошибки
 
 
=== Подфункция 0 - открыть UDP-сокет. ===
 
Параметры:
  * eax = 53 - номер функции