Ru/api/kernel: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
m (sysfn/ru reference restored)
No edit summary
Line 171: Line 171:
== Функция 37 - работа с мышью. ==
== Функция 37 - работа с мышью. ==


 
Описание функции перенесено в отдельную статью: [[SysFn37/ru|Функция 37]]
===- Подфункция 0 - экранные координаты мыши ===
Параметры:
  * eax = 37 - номер функции
  * ebx = 0 - номер подфункции
Возвращаемое значение:
  * eax = x*65536 + y, (x,y)=координаты курсора мыши (считая от 0)
 
=== Подфункция 1 - координаты мыши относительно окна ===
Параметры:
  * eax = 37 - номер функции
  * ebx = 1 - номер подфункции
Возвращаемое значение:
  * eax = x*65536 + y, (x,y)=координаты курсора мыши относительно
    окна приложения (считая от 0)
Замечания:
  * Значение вычисляется по формуле (x-xwnd)*65536 + (y-ywnd).
    Если y>=ywnd, то младшее слово неотрицательно и содержит
    относительную y-координату, а старшее - относительную x-координату
    (правильного знака). В противном случае младшее слово отрицательно
    и всё равно содержит относительную y-координату,
    а к старшему слову следует прибавить 1.
 
=== Подфункция 2 - нажатые кнопки мыши ===
Параметры:
  * eax = 37 - номер функции
  * ebx = 2 - номер подфункции
Возвращаемое значение:
  * eax содержит информацию о нажатых кнопках мыши:
  * бит 0 установлен = левая кнопка нажата
  * бит 1 установлен = правая кнопка нажата
  * бит 2 установлен = средняя кнопка нажата
  * бит 3 установлен = 4-я кнопка нажата
  * бит 4 установлен = 5-я кнопка нажата
  * прочие биты сброшены
 
=== Подфункция 4 - загрузить курсор ===
Параметры:
  * eax = 37 - номер функции
  * ebx = 4 - номер подфункции
  * dx = источник данных:
  * dx = LOAD_FROM_FILE = 0 - данные в файле
    * ecx = указатель на полный путь к файлу курсора
    * файл курсора должен быть в формате .cur, стандартном для
      MS Windows, причём размером 32*32 пикселя
  * dx = LOAD_FROM_MEM = 1 - данные файла уже загружены в память
    * ecx = указатель на данные файла курсора
    * формат данных такой же, как и в предыдущем случае
  * dx = LOAD_INDIRECT = 2 - данные в памяти
    * ecx = указатель на образ курсора в формате ARGB 32*32 пикселя
    * edx = 0xXXYY0002, где
      * XX = x-координата "горячей точки" курсора
      * YY = y-координата
      * 0 <= XX, YY <= 31
Возвращаемое значение:
  * eax = 0 - неудача
  * иначе eax = хэндл курсора
 
=== Подфункция 5 - установить курсор ===
Устанавливает новый курсор для окна текущего потока.
Параметры:
  * eax = 37 - номер функции
  * ebx = 5 - номер подфункции
  * ecx = хэндл курсора
Возвращаемое значение:
  * eax = хэндл предыдущего установленного курсора
Замечания:
  * Если передан некорректный хэндл, то функция восстановит курсор
    по умолчанию (стандартную стрелку). В частности, к восстановлению
    курсора по умолчанию приводит передача ecx=0.
 
=== Подфункция 6 - удалить курсор ===
Параметры:
  * eax = 37 - номер функции
  * ebx = 6 - номер подфункции
  * ecx = хэндл курсора
Возвращаемое значение:
  * eax разрушается
Замечания:
  * Курсор должен был быть ранее загружен текущим потоком
    (вызовом подфункции 4). Функция не удаляет системные курсоры и
    курсоры, загруженные другими приложениями.
  * Если удаляется активный (установленный подфункцией 5) курсор, то
    восстанавливается курсор по умолчанию (стандартная стрелка).
 
=== Подфункция 7 - данные прокрутки ===
Параметры:
  * eax = 37 - номер функции
  * ebx = 6 - номер подфункции
Возвращаемое значение:
  * eax = [horizontal offset]*65536 + [vertical offset]
Замечания:
  * Данные доступны только активному окну.
  * После прочтения значения обнуляются.
  * Данные имеют знаковые значения.
 


== Функция 38 - нарисовать отрезок. ==
== Функция 38 - нарисовать отрезок. ==


Параметры:
Описание функции перенесено в отдельную статью: [[SysFn38/ru|Функция 38]]
  * eax = 38 - номер функции
  * ebx = [координата начала по оси x]*65536 +
              [координата конца по оси x]
  * ecx = [координата начала по оси y]*65536 +
              [координата конца по оси y]
  * edx = 0x00RRGGBB - цвет
    edx = 0x01xxxxxx - рисовать инверсный отрезок
          (младшие 24 бита игнорируются)
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Координаты берутся относительно окна.
  * Конечная точка также рисуется.


== Функция 39 - чтение фона. ==


=== Подфункция 1 - получить размер фонового изображения. ===
Описание функции перенесено в отдельную статью: [[SysFn39/ru|Функция 39]]
 
Параметры:
  * eax = 39 - номер функции
  * ebx = 1 - номер подфункции
Возвращаемое значение:
  * eax = [ширина]*65536 + [высота]
Замечания:
  * Есть парная команда установки размеров фонового изображения -
    подфункция 1 функции 15. После которой, разумеется, следует
    заново определить само изображение.
 
 
== Функция 39, подфункция 2 - прочитать точку с фонового изображения. ==
 
Параметры:
  * eax = 39 - номер функции
  * ebx = 2 - номер подфункции
  * ecx = смещение
Возвращаемое значение:
  * eax = 0x00RRGGBB - цвет точки, если смещение допустимо
    (меньше 0x160000-16)
  * eax = 2 - иначе
Замечания:
  * Не следует полагаться на возвращаемое значение в случае неверного
    смещения, оно может измениться в следующих версиях ядра.
  * Смещение точки с координатами (x,y) вычисляется как (x+y*xsize)*3.
  * Есть парная функция установки точки на фоновом изображении -
    подфункция 2 функции 15.
 
 
=== Подфункция 4 - получить режим отрисовки фона. ===
 
Параметры:
  * eax = 39 - номер функции
  * ebx = 4 - номер подфункции
Возвращаемое значение:
  * eax = 1 - замостить
  * eax = 2 - растянуть
Замечания:
  * Есть парная функция установки режима отрисовки фона -
    подфункция 4 функции 15.
 


== Функция 40 - установить маску для ожидаемых событий. ==
== Функция 40 - установить маску для ожидаемых событий. ==
Line 336: Line 187:
== Функция 41 - узнать владельца IRQ. ==
== Функция 41 - узнать владельца IRQ. ==


Параметры:
Описание функции перенесено в отдельную статью: [[SysFn41/ru|Функция 41]]
  * eax = 41 - номер функции
  * ebx = номер IRQ, 0..15
Возвращаемое значение:
  * eax = PID владельца
  * eax = 0, если владельца нет
  * eax = -1 для некорректного ebx
 


== Функция 42 - работа с данными, полученными по IRQ. ==
== Функция 42 - работа с данными, полученными по IRQ. ==

Revision as of 19:48, 5 April 2010

СИСТЕМНЫЕ ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ Kolibri 0.7.1.0

Номер функции помещается в регистр eax. Вызов системной функции осуществляется командой "int 0x40". Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются.