SysFn18/ru: Difference between revisions
No edit summary |
Vitalkrilov (talk | contribs) m (обновление: "@panel" -> "@taskbar") |
||
(35 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
'''Функция 18''' - | '''Функция 18''' - | ||
---- | ---- | ||
=== Подфункция 1 - сделать неактивным окно потока === | |||
Введена в ревизии 2244 | |||
Параметры: | |||
* eax = 18 - номер функции | |||
* ebx = 1 - номер подфункции | |||
* ecx = номер слота процесса/потока | |||
Возвращаемое значение: | |||
* функция не возвращает значения | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_UNFOCUS_WINDOW (1) | |||
=== Подфункция 2 - завершить процесс/поток по слоту. === | === Подфункция 2 - завершить процесс/поток по слоту. === | ||
Line 12: | Line 27: | ||
* Нельзя завершить поток операционной системы OS/IDLE (номер слота 1), можно завершить любой обычный поток/процесс. | * Нельзя завершить поток операционной системы OS/IDLE (номер слота 1), можно завершить любой обычный поток/процесс. | ||
* Смотри также подфункцию 18 - завершение процесса/потока с заданным идентификатором. | * Смотри также подфункцию 18 - завершение процесса/потока с заданным идентификатором. | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_TERMINATE_THREAD (2) | |||
=== Подфункция 3 - сделать активным окно заданного потока. === | === Подфункция 3 - сделать активным окно заданного потока. === | ||
Line 24: | Line 43: | ||
* При указании корректного, но несуществующего слота активизируется какое-то окно. | * При указании корректного, но несуществующего слота активизируется какое-то окно. | ||
* Узнать, какое окно является активным, можно вызовом подфункции 7. | * Узнать, какое окно является активным, можно вызовом подфункции 7. | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_FOCUS_WINDOW (3) | |||
=== Подфункция 4 - получить счётчик пустых тактов в секунду. === | === Подфункция 4 - получить счётчик пустых тактов в секунду. === | ||
Line 34: | Line 57: | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = значение счётчика пустых тактов в секунду | * eax = значение счётчика пустых тактов в секунду | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_GET_IDLE_COUNT (4) | |||
=== Подфункция 5 - получить тактовую частоту. === | === Подфункция 5 - получить тактовую частоту. === | ||
Line 42: | Line 69: | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = тактовая частота (по модулю 2^32 тактов = 4ГГц) | * eax = тактовая частота (по модулю 2^32 тактов = 4ГГц) | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_GET_CPU_REQUENCY (5) | |||
=== Подфункция 6 - сохранить рамдиск в файл на жёстком диске. === | === Подфункция 6 - сохранить рамдиск в файл на жёстком диске. === | ||
Line 54: | Line 85: | ||
Замечания: | Замечания: | ||
* Все папки в указанном пути должны существовать, иначе вернётся значение 5, "файл не найден". | * Все папки в указанном пути должны существовать, иначе вернётся значение 5, "файл не найден". | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_RD_TO_HDD (6) | |||
=== Подфункция 7 - получить номер активного окна. === | === Подфункция 7 - получить номер активного окна. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 7 - номер подфункции | :* ebx = 7 - номер подфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = номер активного окна (номер слота потока, окно которого активно) | :* eax = номер активного окна (номер слота потока, окно которого | ||
::активно) | |||
Замечания: | Замечания: | ||
* Активное окно находится вверху оконного стэка и получает сообщения обо всём вводе с клавиатуры. | :* Активное окно находится вверху оконного стэка и получает | ||
* Сделать окно активным можно вызовом подфункции 3. | ::сообщения обо всём вводе с клавиатуры. | ||
:* Сделать окно активным можно вызовом подфункции 3. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_GET_ACTIVE_WINDOW (7) | |||
=== Подфункция 8 - отключить/разрешить звук спикера. === | === Подфункция 8 - отключить/разрешить звук спикера. === | ||
Line 71: | Line 111: | ||
При включённом - направляются на встроенный спикер. | При включённом - направляются на встроенный спикер. | ||
=== Подподфункция 1 - получить состояние. === | ==== Подподфункция 1 - получить состояние. ==== | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 8 - номер подфункции | :* ebx = 8 - номер подфункции | ||
* ecx = 1 - номер подподфункции | :* ecx = 1 - номер подподфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = 0 - звук спикера разрешён; 1 - запрещён | :* eax = 0 - звук спикера разрешён; 1 - запрещён | ||
=== Подподфункция 2 - переключить состояние. === | ==== Подподфункция 2 - переключить состояние. ==== | ||
Переключает состояния разрешения/запрещения. | Переключает состояния разрешения/запрещения. | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 8 - номер подфункции | :* ebx = 8 - номер подфункции | ||
* ecx = 2 - номер подподфункции | :* ecx = 2 - номер подподфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* функция не возвращает значения | :* функция не возвращает значения | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_SPEAKER (8) | |||
::ecx - SSSF_GET_STATE (1), SSSF_TOGGLE (2) | |||
=== Подфункция 9 - завершение работы системы === | === Подфункция 9 - завершение работы системы с параметром. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 9 - номер подфункции | :* ebx = 9 - номер подфункции | ||
* ecx = параметр: | :* ecx = параметр: | ||
::* 2 = выключить компьютер | |||
::* 3 = перезагрузить компьютер | |||
::* 4 = перезапустить ядро из файла kernel.mnt на рамдиске | |||
Возвращаемое значение: | Возвращаемое значение: | ||
* при неверном ecx регистры не меняются (т.е. eax=18) | :* при неверном ecx регистры не меняются (т.е. eax=18) | ||
* при правильном вызове всегда возвращается признак успеха eax=0 | :* при правильном вызове всегда возвращается признак успеха eax=0 | ||
Замечания: | Замечания: | ||
* Не следует полагаться на возвращаемое значение при неверном вызове, оно может измениться в последующих версиях ядра. | :* Не следует полагаться на возвращаемое значение при неверном | ||
::вызове, оно может измениться в последующих версиях ядра. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_SHUTDOWN (9) | |||
=== Подфункция 10 - свернуть окно приложения. === | === Подфункция 10 - свернуть окно приложения. === | ||
Сворачивает собственное окно. | Сворачивает собственное окно. | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 10 - номер подфункции | :* ebx = 10 - номер подфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* функция не возвращает значения | :* функция не возвращает значения | ||
Замечания: | Замечания: | ||
* Минимизированное окно с точки зрения функции 9 сохраняет положение и размеры. | :* Минимизированное окно с точки зрения функции 9 сохраняет положение | ||
* Восстановление окна приложения происходит при активизировании подфункцией 3. | ::и размеры. | ||
* Обычно нет необходимости явно сворачивать/разворачивать своё окно: сворачивание окна осуществляется системой при нажатии на кнопку минимизации (которая для окон со скином определяется автоматически | :* Восстановление окна приложения происходит при активизировании | ||
::подфункцией 3. | |||
:* Обычно нет необходимости явно сворачивать/разворачивать своё окно: | |||
::сворачивание окна осуществляется системой при нажатии на кнопку | |||
::минимизации (которая для окон со скином определяется автоматически | |||
::функцией 0, для окон без скина её можно определить функцией 8), | |||
::восстановление - приложением @taskbar. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_MINIMIZE_WINDOW (10) | |||
=== Подфункция 11 - получить информацию о дисковой подсистеме. === | === Подфункция 11 - получить информацию о дисковой подсистеме. === | ||
<big>'''Внимание:''' Эта подфункция будет [http://board.kolibrios.org/viewtopic.php?f=35&t=1854 удалена] в следующих версиях системы</big> | |||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 11 - номер подфункции | :* ebx = 11 - номер подфункции | ||
* ecx = тип таблицы: | :* ecx = тип таблицы: | ||
::* 1 = короткая версия, 10 байт | |||
::* 2 = полная версия, 65536 байт | |||
* edx = указатель на буфер (в приложении) для таблицы | :* edx = указатель на буфер (в приложении) для таблицы | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* функция не возвращает значения | :* функция не возвращает значения | ||
Формат таблицы: короткая версия: | |||
Формат таблицы: | :* +0: byte: информация о НГМД (дисководах для дискет), AAAABBBB, | ||
* +0: byte: информация о НГМД (дисководах для дискет), AAAABBBB, где AAAA задаёт тип первого дисковода, BBBB - второго согласно следующему списку: | ::где AAAA задаёт тип первого дисковода, BBBB - второго согласно | ||
::следующему списку: | |||
::* 0 = нет дисковода | |||
::* 1 = 360Kb, 5.25'' | |||
::* 2 = 1.2Mb, 5.25'' | |||
::* 3 = 720Kb, 3.5'' | |||
::* 4 = 1.44Mb, 3.5'' | |||
::* 5 = 2.88Mb, 3.5'' (такие дискеты сейчас уже не используются) | |||
* +1: byte: информация о жёстких дисках и CD-приводах, AABBCCDD, где AA соответствует контроллеру IDE0, ..., DD - IDE3: | ::Например, для стандартной конфигурации из одного 1.44-дисковода | ||
::здесь будет 40h, а для случая 1.2Mb на A: и 1.44Mb на B: | |||
::значение оказывается 24h. | |||
:* +1: byte: информация о жёстких дисках и CD-приводах, AABBCCDD, | |||
::где AA соответствует контроллеру IDE0, ..., DD - IDE3: | |||
* +2: 4 db: число найденных разделов на жёстких дисках с соответственно IDE0,...,IDE3. | ::* 0 = устройство отсутствует | ||
* +6: 4 db: зарезервировано | ::* 1 = жёсткий диск | ||
::* 2 = CD-привод | |||
Формат таблицы: | ::Например, в случае HD на IDE0 и CD на IDE2 здесь будет 48h. | ||
* +0: 10 db: такие же, как и в короткой версии | :* +2: 4 db: число найденных разделов на жёстких дисках с | ||
* +10: 100 db: данные для первого раздела | ::соответственно IDE0,...,IDE3. | ||
* +110: 100 db: данные для второго раздела | ::При отсутствии жёсткого диска на IDEx соответствующий байт | ||
* ... | ::нулевой, при наличии показывает число распознанных разделов, | ||
* +10+100*(n-1): 100 db: данные для последнего раздела | ::которых может и не быть (если носитель не отформатирован или | ||
::если файловая система не поддерживается). В текущей версии ядра | |||
::для жёстких дисков поддерживаются только FAT16, FAT32 и NTFS. | |||
:* +6: 4 db: зарезервировано | |||
Формат таблицы: полная версия: | |||
:* +0: 10 db: такие же, как и в короткой версии | |||
:* +10: 100 db: данные для первого раздела | |||
:* +110: 100 db: данные для второго раздела | |||
:* ... | |||
:* +10+100*(n-1): 100 db: данные для последнего раздела | |||
Разделы расположены в следующем порядке: сначала последовательно все | |||
распознанные разделы на HD на IDE0 (если есть), | |||
затем на HD на IDE1 (если есть) и т.д. до IDE3. | |||
Формат информации о разделе: | Формат информации о разделе: | ||
* +0: dword: начальный физический сектор раздела | :* +0: dword: начальный физический сектор раздела | ||
* +4: dword: последний физический сектор раздела (принадлежит разделу) | :* +4: dword: последний физический сектор раздела | ||
* +8: byte: тип файловой системы: | ::(принадлежит разделу) | ||
* формат дальнейших данных зависит от файловой системы, может меняться с изменениями в ядре и поэтому не описывается | :* +8: byte: тип файловой системы: | ||
::16=FAT16, 32=FAT32, 1=NTFS | |||
:* формат дальнейших данных зависит от файловой системы, | |||
::может меняться с изменениями в ядре и поэтому не описывается | |||
Замечания: | |||
:* Короткая таблица может быть использована для получения информации | |||
::об имеющихся устройствах. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_INFO_DISC_SYS (11) | |||
=== Подфункция 13 - получить версию ядра. === | === Подфункция 13 - получить версию ядра. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 13 - номер подфункции | :* ebx = 13 - номер подфункции | ||
* ecx = указатель на буфер (не менее 16 байт), куда будет помещена информация | :* ecx = указатель на буфер (не менее 16 байт), куда будет помещена | ||
::информация | |||
Возвращаемое значение: | Возвращаемое значение: | ||
* функция не возвращает значения | :* функция не возвращает значения, | ||
::но, если указатель в ecx недопустимый, например, | |||
::регион [ecx, ecx + 9) пересекается с памятью ядра, | |||
::то тогда функция возвращает -1 | |||
Замечания: | |||
* В данный момент используется только часть буфера размером | |||
::9 байт. Тем не менее рекомендуется использовать буфер | |||
::размером 16 байт для будущей совместимости, в будущем могут быть | |||
::добавлены некоторые поля. | |||
Структура буфера: | Структура буфера: | ||
db a,b,c,d для версии a.b.c.d | db a,b,c,d для версии a.b.c.d | ||
db | db 0: зарезервировано | ||
dd REV - номер svn-ревизии ядра | dd REV - номер svn-ревизии ядра | ||
Для ядра Kolibri 0.7. | |||
db 0,7, | Для ядра Kolibri 0.7.7.0+: | ||
db | db 0,7,7,0 | ||
dd | db 0 | ||
dd 1675 | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_KERNEL_VERSION (13) | |||
=== Подфункция 14 - ожидать начала обратного хода луча развёртки монитора. === | === Подфункция 14 - ожидать начала обратного хода луча развёртки монитора. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 14 - номер подфункции | :* ebx = 14 - номер подфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = 0 как признак успеха | :* eax = 0 как признак успеха | ||
Замечания: | |||
:* Функция предназначена исключительно для активных | |||
::высокопроизводительных графических приложений; используется для | |||
::плавного вывода графики. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_WAIT_RETRACE (14) | |||
=== Подфункция 15 - поместить курсор мыши в центр экрана. === | === Подфункция 15 - поместить курсор мыши в центр экрана. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 15 - номер подфункции | :* ebx = 15 - номер подфункции | ||
Возвращаемое значение: | |||
:* eax = 0 как признак успеха | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_CURSOR_CENTER (15) | |||
=== Подфункция 16 - Получить размер свободной оперативной памяти. === | === Подфункция 16 - Получить размер свободной оперативной памяти. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 16 - номер подфункции | :* ebx = 16 - номер подфункции | ||
Возвращаемое значение: | |||
:* eax = размер свободной памяти в килобайтах | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_GET_FREE_RAM (16) | |||
=== Подфункция 17 - получить размер имеющейся оперативной памяти. === | === Подфункция 17 - получить размер имеющейся оперативной памяти. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 17 - номер подфункции | :* ebx = 17 - номер подфункции | ||
Возвращаемое значение: | |||
:* eax = общий размер имеющейся памяти в килобайтах | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_GET_TOTAL_RAM (17) | |||
=== Подфункция 18 - завершить процесс/поток по идентификатору. === | === Подфункция 18 - завершить процесс/поток по идентификатору. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 18 - номер подфункции | :* ebx = 18 - номер подфункции | ||
* ecx = идентификатор процесса/потока (PID/TID) | :* ecx = идентификатор процесса/потока (PID/TID) | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = 0 - успешно | :* eax = 0 - успешно | ||
* eax = -1 - ошибка (процесс не найден или является системным) | :* eax = -1 - ошибка (процесс не найден или является системным) | ||
Замечания: | |||
:* Нельзя завершить поток операционной системы OS/IDLE (номер слота | |||
::1), можно завершить любой обычный поток/процесс. | |||
:* Смотри также подфункцию 2 - завершение | |||
::процесса/потока по заданному слоту. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_TERMINATE_THREAD_ID (18) | |||
=== Подфункция 19 - получить/установить настройки мыши. === | === Подфункция 19 - получить/установить настройки мыши. === | ||
Line 242: | Line 346: | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 19 - номер подфункции | :* ebx = 19 - номер подфункции | ||
* ecx = 0 - номер подподфункции | :* ecx = 0 - номер подподфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = | :* eax = текущий делитель скорости | ||
==== Подподфункция 1 - установить скорость мыши. ==== | ==== Подподфункция 1 - установить скорость мыши. ==== | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 19 - номер подфункции | :* ebx = 19 - номер подфункции | ||
* ecx = 1 - номер подподфункции | :* ecx = 1 - номер подподфункции | ||
* edx = новое значение скорости | :* edx = новое значение делителя скорости | ||
Возвращаемое значение: | |||
:* функция не возвращает значения | |||
Замечание: рекомендуемый делитель скорости = 4 | |||
==== Подподфункция 2 - получить | ==== Подподфункция 2 - получить чувствительность мыши. ==== | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 19 - номер подфункции | :* ebx = 19 - номер подфункции | ||
* ecx = 2 - номер подподфункции | :* ecx = 2 - номер подподфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = | :* eax = текущий коэффициент чувствительности | ||
==== Подподфункция 3 - установить | ==== Подподфункция 3 - установить чувствительность мыши. ==== | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 19 - номер подфункции | :* ebx = 19 - номер подфункции | ||
* ecx = 3 - номер подподфункции | :* ecx = 3 - номер подподфункции | ||
* edx = новое значение | :* edx = новое значение коэффициента чувствительности | ||
Возвращаемое значение: | |||
:* функция не возвращает значения | |||
Замечание: рекомендуемый коэффициент чувствительности = 3 | |||
==== Подподфункция 4 - установить положение курсора мыши. ==== | ==== Подподфункция 4 - установить положение курсора мыши. ==== | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 19 - номер подфункции | :* ebx = 19 - номер подфункции | ||
* ecx = 4 - номер подподфункции | :* ecx = 4 - номер подподфункции | ||
* edx = [координата по оси x]*65536 + [координата по оси y] | :* edx = [координата по оси x]*65536 + [координата по оси y] | ||
Возвращаемое значение: | |||
:* функция не возвращает значения | |||
==== Подподфункция 5 - симулировать состояние клавиш мыши. ==== | |||
Параметры: | |||
:* eax = 18 - номер функции | |||
:* ebx = 19 - номер подфункции | |||
:* ecx = 5 - номер подподфункции | |||
:* edx = информация о эмулируемом состоянии кнопок мыши: | |||
::(соответствует возвращаемому значению подфункции 2 функции 37) | |||
::* бит 0 установлен = левая кнопка нажата | |||
::* бит 1 установлен = правая кнопка нажата | |||
::* бит 2 установлен = средняя кнопка нажата | |||
::* бит 3 установлен = 4-я кнопка нажата | |||
::* бит 4 установлен = 5-я кнопка нажата | |||
Возвращаемое значение: | Возвращаемое значение: | ||
* функция не возвращает значения | :* функция не возвращает значения | ||
==== Подподфункция | ==== Подподфункция 6 - получить задержку двойного щелчка. ==== | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 19 - номер подфункции | :* ebx = 19 - номер подфункции | ||
* ecx = | :* ecx = 6 - номер подподфункции | ||
* | Возвращаемое значение: | ||
:* eax = текущая задержка двойного щелчка (в сотых секунды) | |||
==== Подподфункция 7 - установить задержку двойного щелчка. ==== | |||
Параметры: | |||
:* eax = 18 - номер функции | |||
:* ebx = 19 - номер подфункции | |||
:* ecx = 7 - номер подподфункции | |||
:* dl = новое значение задержки двойного щелчка (в сотых секунды) | |||
Возвращаемое значение: | Возвращаемое значение: | ||
* функция не возвращает значения | :* функция не возвращает значения | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_MOUSE_SETTINGS (19) | |||
::ecx - SSSF_GET_SPEED (0), SSSF_SET_SPEED (1), SSSF_GET_SPEEDUP (2), | |||
:::SSSF_SET_SPEEDUP (3), SSSF_SET_POS (4), SSSF_SET_BUTTON (5), | |||
:::SSSF_GET_DOUBLE_CLICK_DELAY (6), SSSF_SET_DOUBLE_CLICK_DELAY (7) | |||
=== Подфункция 20 - получить информацию об оперативной памяти. === | === Подфункция 20 - получить информацию об оперативной памяти. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 20 - номер подфункции | :* ebx = 20 - номер подфункции | ||
* ecx = указатель на буфер для информации (36 байт) | :* ecx = указатель на буфер для информации (36 байт) | ||
Возвращаемое значение: | |||
:* eax = общий размер имеющейся оперативной памяти в байтах | |||
::или -1 в случае ошибки | |||
:* буфер, на который указывает ecx, содержит следующую информацию: | |||
::* +0: dword: общий размер имеющейся оперативной памяти в страницах | |||
::* +4::dword: размер свободной оперативной памяти в страницах | |||
::* +8::dword: число страничных ошибок (исключений #PF) | |||
:::::::: в приложениях | |||
::* +12: dword: размер кучи ядра в байтах | |||
::* +16: dword: размер свободной памяти в куче ядра в байтах | |||
::* +20: dword: общее количество блоков памяти в куче ядра | |||
::* +24: dword: количество свободных блоков памяти в куче ядра | |||
::* +28: dword: размер наибольшего свободного блока в куче ядра | |||
:::::::: (зарезервировано) | |||
::* +32: dword: размер наибольшего выделенного блока в куче ядра | |||
:::::::: (зарезервировано) | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_GET_RAM_INFO (20) | |||
=== Подфункция 21 - получить номер слота процесса/потока по идентификатору. === | === Подфункция 21 - получить номер слота процесса/потока по идентификатору. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 21 - номер подфункции | :* ebx = 21 - номер подфункции | ||
* ecx = идентификатор процесса/потока (PID/TID) | :* ecx = идентификатор процесса/потока (PID/TID) | ||
Возвращаемое значение: | |||
:* eax = 0 - ошибка (неверный идентификатор) | |||
:* иначе eax = номер слота | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_GET_THREAD_SLOT (21) | |||
=== Подфункция 22 - операции с окном другого процесса/потока. === | === Подфункция 22 - операции с окном другого процесса/потока. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 22 - номер подфункции | :* ebx = 22 - номер подфункции | ||
* ecx = тип операции: | :* ecx = тип операции: | ||
::* 0 = минимизация окна, поток задан номером слота | |||
::* 1 = минимизация окна, поток задан идентификатором | |||
::* 2 = восстановление окна, поток задан номером слота | |||
::* 3 = восстановление окна, поток задан идентификатором | |||
* edx = параметр операции (номер слота или PID/TID) | :* edx = параметр операции (номер слота или PID/TID) | ||
Возвращаемое значение: | |||
:* eax = 0 - успешно | |||
:* eax = -1 - ошибка (неправильный параметр) | |||
Замечания: | |||
:* Поток может свернуть своё окно вызовом подфункции 10. | |||
:* Восстановление окна с одновременной активизацией осуществляется | |||
::подфункции 3 (принимающей номер слота). | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_FOREIGN_WINDOW (22) | |||
::ecx - SSSF_MINIMIZE (0), SSSF_MINIMIZE_ID (1), SSSF_RESTORE (2), | |||
:::SSSF_RESTORE_ID (3) | |||
=== Подфункция 23 - минимизировать все окна === | |||
Параметры: | |||
:* eax = 18 - номер функции | |||
:* ebx = 23 - номер подфункции | |||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = 0 - | :* eax = 0 - все окна были минимизированы до вызова функции | ||
* eax = - | :* eax = N - количество окон свернутых функцией | ||
Замечания: | |||
:* Окна спец. потоков (имя начинается с символа @) не сворачиваются. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_MINIMIZE_ALL (23) | |||
=== Подфункция 24 - установить пределы отрисовки === | |||
Параметры: | |||
:* eax = 18 - номер функции | |||
:* ebx = 24 - номер подфункции | |||
:* ecx = новый размер по X | |||
:* edx = новый размер по Y | |||
Возвращаемое значение: | |||
:* функция не возвращает значения | |||
Замечания: | Замечания: | ||
* | :* Функция не меняет физический размер видеорежима. Она предназначена | ||
* | ::для нестандартных дисплеев, отображающих изображение частично. | ||
:* Размеры указываемые в функции не должны превышать размеры текущего | |||
::видеорежима, иначе функция ничего не изменит. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_SET_SCREEN_LIMITS (24) | |||
=== Подфункция 25 - Управление положением окна относительно других окон. === | |||
==== Подподфункция 1 - получить положение ==== | |||
Параметры: | |||
:* eax = 18 - номер функции | |||
:* ebx = 25 - номер подфункции | |||
:* ecx = 1 - номер подподфункции | |||
:* edx = -1 (для текущего окна) или PID приложения | |||
Возвращаемое значение: | |||
:* eax = одна из констант положения окна | |||
==== Подподфункция 2 - установить положение ==== | |||
Параметры: | |||
:* eax = 18 - номер функции | |||
:* ebx = 25 - номер подфункции | |||
:* ecx = 2 - номер подподфункции | |||
:* edx = -1(для текущего окна) или PID приложения | |||
:* esi = новое положение окна (одна из констант ниже) | |||
Возвращаемое значение: | |||
:* eax = 0 - неудача | |||
:* eax = 1 - успех | |||
Константы положения окна относительно других окон: | |||
:ZPOS_DESKTOP = -2 - на самом заднем плане | |||
:ZPOS_ALWAYS_BACK = -1 - позади всех окон | |||
:ZPOS_NORMAL = 0 - обычное | |||
:ZPOS_ALWAYS_TOP = 1 - поверх всех окон | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_WINDOW_BEHAVIOR (25) | |||
::ecx - SSSF_GET_WB (1), SSSF_SET_WB (2) | |||
{{System_functions}} | {{System_functions}} | ||
[[Category: SysCalls]] | [[Category: SysCalls]] |
Latest revision as of 15:27, 12 January 2022
Функция 18 -
Подфункция 1 - сделать неактивным окно потока
Введена в ревизии 2244
Параметры:
- eax = 18 - номер функции
- ebx = 1 - номер подфункции
- ecx = номер слота процесса/потока
Возвращаемое значение:
- функция не возвращает значения
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_UNFOCUS_WINDOW (1)
Подфункция 2 - завершить процесс/поток по слоту.
Параметры:
- eax = 18 - номер функции
- ebx = 2 - номер подфункции
- ecx = номер слота процесса/потока
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- Нельзя завершить поток операционной системы OS/IDLE (номер слота 1), можно завершить любой обычный поток/процесс.
- Смотри также подфункцию 18 - завершение процесса/потока с заданным идентификатором.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_TERMINATE_THREAD (2)
Подфункция 3 - сделать активным окно заданного потока.
Параметры:
- eax = 18 - номер функции
- ebx = 3 - номер подфункции
- ecx = номер слота потока
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- При указании корректного, но несуществующего слота активизируется какое-то окно.
- Узнать, какое окно является активным, можно вызовом подфункции 7.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_FOCUS_WINDOW (3)
Подфункция 4 - получить счётчик пустых тактов в секунду.
Под пустыми тактами понимается время, в которое процессор простаивает в ожидании прерывания (в инструкции hlt).
Параметры:
- eax = 18 - номер функции
- ebx = 4 - номер подфункции
Возвращаемое значение:
- eax = значение счётчика пустых тактов в секунду
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_GET_IDLE_COUNT (4)
Подфункция 5 - получить тактовую частоту.
Параметры:
- eax = 18 - номер функции
- ebx = 5 - номер подфункции
Возвращаемое значение:
- eax = тактовая частота (по модулю 2^32 тактов = 4ГГц)
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_GET_CPU_REQUENCY (5)
Подфункция 6 - сохранить рамдиск в файл на жёстком диске.
Параметры:
- eax = 18 - номер функции
- ebx = 6 - номер подфункции
- ecx = указатель на строку с полным именем файла (например, "/hd0/1/kolibri/kolibri.img")
Возвращаемое значение:
- eax = 0 - успешно
- иначе eax = код ошибки файловой системы
Замечания:
- Все папки в указанном пути должны существовать, иначе вернётся значение 5, "файл не найден".
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_RD_TO_HDD (6)
Подфункция 7 - получить номер активного окна.
Параметры:
- eax = 18 - номер функции
- ebx = 7 - номер подфункции
Возвращаемое значение:
- eax = номер активного окна (номер слота потока, окно которого
- активно)
Замечания:
- Активное окно находится вверху оконного стэка и получает
- сообщения обо всём вводе с клавиатуры.
- Сделать окно активным можно вызовом подфункции 3.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_GET_ACTIVE_WINDOW (7)
Подфункция 8 - отключить/разрешить звук спикера.
При отключённом звуке вызовы подфункции 55 функции 55 игнорируются. При включённом - направляются на встроенный спикер.
Подподфункция 1 - получить состояние.
Параметры:
- eax = 18 - номер функции
- ebx = 8 - номер подфункции
- ecx = 1 - номер подподфункции
Возвращаемое значение:
- eax = 0 - звук спикера разрешён; 1 - запрещён
Подподфункция 2 - переключить состояние.
Переключает состояния разрешения/запрещения. Параметры:
- eax = 18 - номер функции
- ebx = 8 - номер подфункции
- ecx = 2 - номер подподфункции
Возвращаемое значение:
- функция не возвращает значения
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_SPEAKER (8)
- ecx - SSSF_GET_STATE (1), SSSF_TOGGLE (2)
Подфункция 9 - завершение работы системы с параметром.
Параметры:
- eax = 18 - номер функции
- ebx = 9 - номер подфункции
- ecx = параметр:
- 2 = выключить компьютер
- 3 = перезагрузить компьютер
- 4 = перезапустить ядро из файла kernel.mnt на рамдиске
Возвращаемое значение:
- при неверном ecx регистры не меняются (т.е. eax=18)
- при правильном вызове всегда возвращается признак успеха eax=0
Замечания:
- Не следует полагаться на возвращаемое значение при неверном
- вызове, оно может измениться в последующих версиях ядра.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_SHUTDOWN (9)
Подфункция 10 - свернуть окно приложения.
Сворачивает собственное окно. Параметры:
- eax = 18 - номер функции
- ebx = 10 - номер подфункции
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- Минимизированное окно с точки зрения функции 9 сохраняет положение
- и размеры.
- Восстановление окна приложения происходит при активизировании
- подфункцией 3.
- Обычно нет необходимости явно сворачивать/разворачивать своё окно:
- сворачивание окна осуществляется системой при нажатии на кнопку
- минимизации (которая для окон со скином определяется автоматически
- функцией 0, для окон без скина её можно определить функцией 8),
- восстановление - приложением @taskbar.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_MINIMIZE_WINDOW (10)
Подфункция 11 - получить информацию о дисковой подсистеме.
Внимание: Эта подфункция будет удалена в следующих версиях системы
Параметры:
- eax = 18 - номер функции
- ebx = 11 - номер подфункции
- ecx = тип таблицы:
- 1 = короткая версия, 10 байт
- 2 = полная версия, 65536 байт
- edx = указатель на буфер (в приложении) для таблицы
Возвращаемое значение:
- функция не возвращает значения
Формат таблицы: короткая версия:
- +0: byte: информация о НГМД (дисководах для дискет), AAAABBBB,
- где AAAA задаёт тип первого дисковода, BBBB - второго согласно
- следующему списку:
- 0 = нет дисковода
- 1 = 360Kb, 5.25
- 2 = 1.2Mb, 5.25
- 3 = 720Kb, 3.5
- 4 = 1.44Mb, 3.5
- 5 = 2.88Mb, 3.5 (такие дискеты сейчас уже не используются)
- Например, для стандартной конфигурации из одного 1.44-дисковода
- здесь будет 40h, а для случая 1.2Mb на A: и 1.44Mb на B:
- значение оказывается 24h.
- +1: byte: информация о жёстких дисках и CD-приводах, AABBCCDD,
- где AA соответствует контроллеру IDE0, ..., DD - IDE3:
- 0 = устройство отсутствует
- 1 = жёсткий диск
- 2 = CD-привод
- Например, в случае HD на IDE0 и CD на IDE2 здесь будет 48h.
- +2: 4 db: число найденных разделов на жёстких дисках с
- соответственно IDE0,...,IDE3.
- При отсутствии жёсткого диска на IDEx соответствующий байт
- нулевой, при наличии показывает число распознанных разделов,
- которых может и не быть (если носитель не отформатирован или
- если файловая система не поддерживается). В текущей версии ядра
- для жёстких дисков поддерживаются только FAT16, FAT32 и NTFS.
- +6: 4 db: зарезервировано
Формат таблицы: полная версия:
- +0: 10 db: такие же, как и в короткой версии
- +10: 100 db: данные для первого раздела
- +110: 100 db: данные для второго раздела
- ...
- +10+100*(n-1): 100 db: данные для последнего раздела
Разделы расположены в следующем порядке: сначала последовательно все распознанные разделы на HD на IDE0 (если есть), затем на HD на IDE1 (если есть) и т.д. до IDE3. Формат информации о разделе:
- +0: dword: начальный физический сектор раздела
- +4: dword: последний физический сектор раздела
- (принадлежит разделу)
- +8: byte: тип файловой системы:
- 16=FAT16, 32=FAT32, 1=NTFS
- формат дальнейших данных зависит от файловой системы,
- может меняться с изменениями в ядре и поэтому не описывается
Замечания:
- Короткая таблица может быть использована для получения информации
- об имеющихся устройствах.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_INFO_DISC_SYS (11)
Подфункция 13 - получить версию ядра.
Параметры:
- eax = 18 - номер функции
- ebx = 13 - номер подфункции
- ecx = указатель на буфер (не менее 16 байт), куда будет помещена
- информация
Возвращаемое значение:
- функция не возвращает значения,
- но, если указатель в ecx недопустимый, например,
- регион [ecx, ecx + 9) пересекается с памятью ядра,
- то тогда функция возвращает -1
Замечания:
- В данный момент используется только часть буфера размером
- 9 байт. Тем не менее рекомендуется использовать буфер
- размером 16 байт для будущей совместимости, в будущем могут быть
- добавлены некоторые поля.
Структура буфера:
db a,b,c,d для версии a.b.c.d db 0: зарезервировано dd REV - номер svn-ревизии ядра
Для ядра Kolibri 0.7.7.0+:
db 0,7,7,0 db 0 dd 1675
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_KERNEL_VERSION (13)
Подфункция 14 - ожидать начала обратного хода луча развёртки монитора.
Параметры:
- eax = 18 - номер функции
- ebx = 14 - номер подфункции
Возвращаемое значение:
- eax = 0 как признак успеха
Замечания:
- Функция предназначена исключительно для активных
- высокопроизводительных графических приложений; используется для
- плавного вывода графики.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_WAIT_RETRACE (14)
Подфункция 15 - поместить курсор мыши в центр экрана.
Параметры:
- eax = 18 - номер функции
- ebx = 15 - номер подфункции
Возвращаемое значение:
- eax = 0 как признак успеха
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_CURSOR_CENTER (15)
Подфункция 16 - Получить размер свободной оперативной памяти.
Параметры:
- eax = 18 - номер функции
- ebx = 16 - номер подфункции
Возвращаемое значение:
- eax = размер свободной памяти в килобайтах
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_GET_FREE_RAM (16)
Подфункция 17 - получить размер имеющейся оперативной памяти.
Параметры:
- eax = 18 - номер функции
- ebx = 17 - номер подфункции
Возвращаемое значение:
- eax = общий размер имеющейся памяти в килобайтах
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_GET_TOTAL_RAM (17)
Подфункция 18 - завершить процесс/поток по идентификатору.
Параметры:
- eax = 18 - номер функции
- ebx = 18 - номер подфункции
- ecx = идентификатор процесса/потока (PID/TID)
Возвращаемое значение:
- eax = 0 - успешно
- eax = -1 - ошибка (процесс не найден или является системным)
Замечания:
- Нельзя завершить поток операционной системы OS/IDLE (номер слота
- 1), можно завершить любой обычный поток/процесс.
- Смотри также подфункцию 2 - завершение
- процесса/потока по заданному слоту.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_TERMINATE_THREAD_ID (18)
Подфункция 19 - получить/установить настройки мыши.
Подподфункция 0 - получить скорость мыши.
Параметры:
- eax = 18 - номер функции
- ebx = 19 - номер подфункции
- ecx = 0 - номер подподфункции
Возвращаемое значение:
- eax = текущий делитель скорости
Подподфункция 1 - установить скорость мыши.
Параметры:
- eax = 18 - номер функции
- ebx = 19 - номер подфункции
- ecx = 1 - номер подподфункции
- edx = новое значение делителя скорости
Возвращаемое значение:
- функция не возвращает значения
Замечание: рекомендуемый делитель скорости = 4
Подподфункция 2 - получить чувствительность мыши.
Параметры:
- eax = 18 - номер функции
- ebx = 19 - номер подфункции
- ecx = 2 - номер подподфункции
Возвращаемое значение:
- eax = текущий коэффициент чувствительности
Подподфункция 3 - установить чувствительность мыши.
Параметры:
- eax = 18 - номер функции
- ebx = 19 - номер подфункции
- ecx = 3 - номер подподфункции
- edx = новое значение коэффициента чувствительности
Возвращаемое значение:
- функция не возвращает значения
Замечание: рекомендуемый коэффициент чувствительности = 3
Подподфункция 4 - установить положение курсора мыши.
Параметры:
- eax = 18 - номер функции
- ebx = 19 - номер подфункции
- ecx = 4 - номер подподфункции
- edx = [координата по оси x]*65536 + [координата по оси y]
Возвращаемое значение:
- функция не возвращает значения
Подподфункция 5 - симулировать состояние клавиш мыши.
Параметры:
- eax = 18 - номер функции
- ebx = 19 - номер подфункции
- ecx = 5 - номер подподфункции
- edx = информация о эмулируемом состоянии кнопок мыши:
- (соответствует возвращаемому значению подфункции 2 функции 37)
- бит 0 установлен = левая кнопка нажата
- бит 1 установлен = правая кнопка нажата
- бит 2 установлен = средняя кнопка нажата
- бит 3 установлен = 4-я кнопка нажата
- бит 4 установлен = 5-я кнопка нажата
Возвращаемое значение:
- функция не возвращает значения
Подподфункция 6 - получить задержку двойного щелчка.
Параметры:
- eax = 18 - номер функции
- ebx = 19 - номер подфункции
- ecx = 6 - номер подподфункции
Возвращаемое значение:
- eax = текущая задержка двойного щелчка (в сотых секунды)
Подподфункция 7 - установить задержку двойного щелчка.
Параметры:
- eax = 18 - номер функции
- ebx = 19 - номер подфункции
- ecx = 7 - номер подподфункции
- dl = новое значение задержки двойного щелчка (в сотых секунды)
Возвращаемое значение:
- функция не возвращает значения
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_MOUSE_SETTINGS (19)
- ecx - SSSF_GET_SPEED (0), SSSF_SET_SPEED (1), SSSF_GET_SPEEDUP (2),
- SSSF_SET_SPEEDUP (3), SSSF_SET_POS (4), SSSF_SET_BUTTON (5),
- SSSF_GET_DOUBLE_CLICK_DELAY (6), SSSF_SET_DOUBLE_CLICK_DELAY (7)
Подфункция 20 - получить информацию об оперативной памяти.
Параметры:
- eax = 18 - номер функции
- ebx = 20 - номер подфункции
- ecx = указатель на буфер для информации (36 байт)
Возвращаемое значение:
- eax = общий размер имеющейся оперативной памяти в байтах
- или -1 в случае ошибки
- буфер, на который указывает ecx, содержит следующую информацию:
- +0: dword: общий размер имеющейся оперативной памяти в страницах
- +4::dword: размер свободной оперативной памяти в страницах
- +8::dword: число страничных ошибок (исключений #PF)
- в приложениях
- +12: dword: размер кучи ядра в байтах
- +16: dword: размер свободной памяти в куче ядра в байтах
- +20: dword: общее количество блоков памяти в куче ядра
- +24: dword: количество свободных блоков памяти в куче ядра
- +28: dword: размер наибольшего свободного блока в куче ядра
- (зарезервировано)
- +32: dword: размер наибольшего выделенного блока в куче ядра
- (зарезервировано)
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_GET_RAM_INFO (20)
Подфункция 21 - получить номер слота процесса/потока по идентификатору.
Параметры:
- eax = 18 - номер функции
- ebx = 21 - номер подфункции
- ecx = идентификатор процесса/потока (PID/TID)
Возвращаемое значение:
- eax = 0 - ошибка (неверный идентификатор)
- иначе eax = номер слота
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_GET_THREAD_SLOT (21)
Подфункция 22 - операции с окном другого процесса/потока.
Параметры:
- eax = 18 - номер функции
- ebx = 22 - номер подфункции
- ecx = тип операции:
- 0 = минимизация окна, поток задан номером слота
- 1 = минимизация окна, поток задан идентификатором
- 2 = восстановление окна, поток задан номером слота
- 3 = восстановление окна, поток задан идентификатором
- edx = параметр операции (номер слота или PID/TID)
Возвращаемое значение:
- eax = 0 - успешно
- eax = -1 - ошибка (неправильный параметр)
Замечания:
- Поток может свернуть своё окно вызовом подфункции 10.
- Восстановление окна с одновременной активизацией осуществляется
- подфункции 3 (принимающей номер слота).
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_FOREIGN_WINDOW (22)
- ecx - SSSF_MINIMIZE (0), SSSF_MINIMIZE_ID (1), SSSF_RESTORE (2),
- SSSF_RESTORE_ID (3)
Подфункция 23 - минимизировать все окна
Параметры:
- eax = 18 - номер функции
- ebx = 23 - номер подфункции
Возвращаемое значение:
- eax = 0 - все окна были минимизированы до вызова функции
- eax = N - количество окон свернутых функцией
Замечания:
- Окна спец. потоков (имя начинается с символа @) не сворачиваются.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_MINIMIZE_ALL (23)
Подфункция 24 - установить пределы отрисовки
Параметры:
- eax = 18 - номер функции
- ebx = 24 - номер подфункции
- ecx = новый размер по X
- edx = новый размер по Y
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- Функция не меняет физический размер видеорежима. Она предназначена
- для нестандартных дисплеев, отображающих изображение частично.
- Размеры указываемые в функции не должны превышать размеры текущего
- видеорежима, иначе функция ничего не изменит.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_SET_SCREEN_LIMITS (24)
Подфункция 25 - Управление положением окна относительно других окон.
Подподфункция 1 - получить положение
Параметры:
- eax = 18 - номер функции
- ebx = 25 - номер подфункции
- ecx = 1 - номер подподфункции
- edx = -1 (для текущего окна) или PID приложения
Возвращаемое значение:
- eax = одна из констант положения окна
Подподфункция 2 - установить положение
Параметры:
- eax = 18 - номер функции
- ebx = 25 - номер подфункции
- ecx = 2 - номер подподфункции
- edx = -1(для текущего окна) или PID приложения
- esi = новое положение окна (одна из констант ниже)
Возвращаемое значение:
- eax = 0 - неудача
- eax = 1 - успех
Константы положения окна относительно других окон:
- ZPOS_DESKTOP = -2 - на самом заднем плане
- ZPOS_ALWAYS_BACK = -1 - позади всех окон
- ZPOS_NORMAL = 0 - обычное
- ZPOS_ALWAYS_TOP = 1 - поверх всех окон
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_WINDOW_BEHAVIOR (25)
- ecx - SSSF_GET_WB (1), SSSF_SET_WB (2)
|