system/docs: align docs with actual kernel, add constants for SF 51
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 2m22s
Build system / Build (pull_request) Successful in 16m44s

This commit is contained in:
2026-01-01 15:56:42 +02:00
parent 10d9e9f36f
commit 8fb3bb76c6
4 changed files with 386 additions and 161 deletions

View File

@@ -1985,7 +1985,7 @@ path db 'HD0/1',0
подфункция 2 функции 15.
---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_GET_RECT (39)
eax - SF_BACKGROUND_GET (39)
======================================================================
== Функция 39, подфункция 3 - получить прямоугольную область фона =
======================================================================
@@ -2169,7 +2169,7 @@ path db 'HD0/1',0
* ebx = 2 - номер подфункции
* ecx = указатель на таблицу цветов
* edx = размер таблицы цветов
(должен быть 40 байт для будущей совместимости)
(до 192 байт; 40 байт для базовой структуры)
Формат таблицы цветов указан в описании подфункции 3.
Возвращаемое значение:
* функция не возвращает значения
@@ -2201,16 +2201,16 @@ path db 'HD0/1',0
* функция не возвращает значения
Формат таблицы цветов: каждый элемент -
dword-значение цвета 0x00RRGGBB
* +0: dword: none - зарезервировано
* +4: dword: none - зарезервировано
* +0: dword: frame
* +4: dword: grab
* +8: dword: work_dark - темный цвет рабочей области для придания
объемна элементам интерфейса
* +12 = +0xC: dword: work_light - светлый цвет рабочей области для
придания объемна элементам интерфейса
* +16 = +0x10: dword: grab_text - цвет текста на заголовке
* +20 = +0x14: dword: work - цвет рабочей области
* +24 = +0x18: dword: button - цвет кнопки в рабочей области
* +28 = +0x1C: dword: button_text - цвет текста на кнопке
* +24 = +0x18: dword: work_button - цвет кнопки в рабочей области
* +28 = +0x1C: dword: work_button_text - цвет текста на кнопке
в рабочей области
* +32 = +0x20: dword: work_text - цвет текста в рабочей области
* +36 = +0x24: dword: graph - цвет графики в рабочей области
@@ -2220,8 +2220,10 @@ dword-значение цвета 0x00RRGGBB
sc system_colors ; объявление переменной
... ; где-то надо вызвать
; описываемую функцию с ecx=sc
mov ecx, [sc.button_text] ; читаем цвет текста
mov ecx, [sc.work_button_text] ; читаем цвет текста
; на кнопке в рабочей области
* Таблица может быть больше (до 192 байт); дополнительные поля
копируются как есть и интерпретируются скинами.
* Использование/неиспользование этих цветов - дело исключительно
самой программы. Для использования нужно просто при вызове функций
рисования указывать цвет, взятый из этой таблицы.
@@ -2505,16 +2507,18 @@ dword-значение цвета 0x00RRGGBB
* иначе eax = TID - идентификатор потока
---------------------- Константы для регистров: ----------------------
eax - SF_CREATE_THREAD (51)
eax - SF_CREATE_THREAD (51) / SF_THREAD_CONTROL (51)
ebx - SSF_CREATE_THREAD (1), SSF_GET_CURR_THREAD_SLOT (2),
SSF_GET_THREAD_PRIORITY (3), SSF_SET_THREAD_PRIORITY (4)
======================================================================
===================== Функция 51, подфункция 2 =======================
=================== Получить номер слота потока ======================
============= Получить номер слота текущего потока ===================
======================================================================
Параметры:
* eax = 51 - номер функции
* ebx = 2 - номер подфункции
Возвращаемое значение:
* eax = номер слота потока
* eax = номер слота текущего потока
======================================================================
===================== Функция 51, подфункция 3 =======================
@@ -3358,66 +3362,66 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
ebx - SSF_MEM_FREE (13)
======================================================================
====================== Функция 68, подфункция 14 =====================
====== Ожидать получения сигнала от других приложений/драйверов. =====
========== Получить событие ядра (обертка GetEvent). ==========
======================================================================
Параметры:
* eax = 68 - номер функции
* ebx = 14 - номер подфункции
* ecx = указатель на буфер для информации (24 байта)
* ecx = указатель на буфер данных (6 dword = 24 байта)
Возвращаемое значение:
* eax разрушается
* eax = дескриптор события
* буфер, на который указывает ecx, содержит следующую информацию:
* +0: dword: идентификатор последующих данных сигнала
* +4: данные принятого сигнала (20 байт), формат которых
определяется первым dword-ом
* +0: dword: EVENT.code (идентификатор последующих данных)
* +4: 5 dword: EVENT.data, формат зависит от EVENT.code
Замечания:
* Бесконечно ожидает любое событие в очереди событий текущего потока.
* Сбрасывает байт приоритета в буфере.
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_WAIT_SIGNAL (14)
======================================================================
=========== Функция 68, подфункция 16 - загрузить драйвер. ===========
=========== Функция 68, подфункция 16 - получить сервис. ===========
======================================================================
Параметры:
* eax = 68 - номер функции
* ebx = 16 - номер подфункции
* ecx = указатель на ASCIIZ-строку с именем драйвера
* ecx = указатель на ASCIIZ-строку с именем сервиса
Возвращаемое значение:
* eax = 0 - неудача
* иначе eax = хэндл драйвера
* eax = указатель на структуру SRV, 0 при ошибке
Замечания:
* Если драйвер ещё не загружен, он загружается;
если драйвер уже загружен, ничего не меняется.
* Имя драйвера чувствительно к регистру символов.
* Если сервис ещё не загружен, ядро пытается загрузить его из
/sys/drivers/<name>.sys.
* Имя сервиса чувствительно к регистру символов.
Максимальная длина имени - 16 символов, включая завершающий
нулевой символ, остальные символы игнорируются.
* Драйвер с именем ABC загружается из файла /sys/drivers/ABC.sys.
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_LOAD_DRIVER (16)
ebx - SSF_GET_SERVICE (16) / SSF_LOAD_DRIVER (16)
======================================================================
========== Функция 68, подфункция 17 - управление драйвером. =========
========== Функция 68, подфункция 17 - вызвать сервис. =========
======================================================================
Параметры:
* eax = 68 - номер функции
* ebx = 17 - номер подфункции
* ecx = указатель на управляющую структуру:
* +0: dword: хэндл драйвера
* +4: dword: код функции драйвера
* +8: dword: указатель на входные данные
* +12 = +0xC: dword: размер входных данных
* +16 = +0x10: dword: указатель на выходные данные
* +20 = +0x14: dword: размер выходных данных
* ecx = указатель на структуру IOCTL:
* +0: dword: хэндл сервиса (указатель на SRV)
* +4: dword: io_code
* +8: dword: указатель на входные данные
* +12: dword: размер входных данных
* +16: dword: указатель на выходные данные
* +20: dword: размер выходных данных
Возвращаемое значение:
* eax = определяется драйвером
* eax = значение, возвращаемое обработчиком сервиса, -1 при ошибке
Замечания:
* Коды функций и структура входных/выходных данных
определяются драйвером.
* Предварительно должен быть получен хэндл драйвера подфункцией 16.
определяются сервисом.
* Хэндл сервиса можно получить подфункцией 16.
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_CONTROL_DRIVER (17)
ebx - SSF_CALL_SERVICE (17) / SSF_CONTROL_DRIVER (17)
======================================================================
== Функция 68, подфункция 18 - загрузить DLL с указанием кодировки. ==
======================================================================
@@ -3482,7 +3486,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
Параметры:
* eax = 68 - номер функции
* ebx = 21 - номер подфункции
* ecx = указатель на ASCIIZ-строку с именем драйвера
* ecx = указатель на ASCIIZ-строку с путем к файлу драйвера
* edx = указатель на командную строку
Возвращаемое значение:
* eax = 0 - неудача
@@ -3674,22 +3678,40 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* функция загружает и, при необходимости, распаковывает файл (kunpack)
======================================================================
======== Функция 68, подфункция 29 - allocate ring memory. =========
======== Функция 68, подфункция 29 - выделить кольцевую память. =========
======================================================================
Parameters:
* eax = 68 - function number
* ebx = 29 - subfunction number
* ecx = required size in bytes
Returned value:
* eax = 0 - failed
* eax = pointer to the allocated ring
Remarks:
* The requested size must be an exact multiple of pagesize (4 Kb)
* The function allocates memory in such a way that you can read and
write beyond the size of the allocated memory and will reach the
beginning of the buffer again.
Параметры:
* eax = 68 - номер функции
* ebx = 29 - номер подфункции
* ecx = требуемый размер в байтах
Возвращаемое значение:
* eax = 0 - неудача
* eax = указатель на выделенное кольцо
Замечания:
* Запрошенный размер должен быть кратен размеру страницы (4 Кб).
* Память выделяется так, что доступ за пределами буфера приводит
к чтению/записи в его начало.
======================================================================
=========== Функция 68, подфункция 30 - выгрузить драйвер. ===========
======================================================================
Параметры:
* eax = 68 - номер функции
* ebx = 30 - номер подфункции
* ecx = указатель на структуру SRV (хэндл драйвера)
* edx = указатель на командную строку (может быть 0)
Возвращаемое значение:
* eax = -1 - неверные параметры
* eax = -2 - ошибка при освобождении памяти драйвера
* иначе eax = указатель на следующую структуру SRV (бывший SRV.fd)
Замечания:
* Перед выгрузкой вызывается точка входа драйвера с DRV_EXIT.
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - 30
======================================================================
======== Функция 68, подфункция 31 - получить данные драйвера. =======
======================================================================
@@ -4516,17 +4538,17 @@ Remarks:
---------------------- Константы для регистров: ----------------------
eax - SF_BLITTER (73)
======================================================================
=================== Функция 74, подфункция -1 ========================
=================== Функция 74, подфункция 255 ========================
=========== Получить количество активных сетевых устройств. ==========
======================================================================
Параметры:
* eax = 74 - номер функции
* bl = -1 - номер подфункции
* bl = 255 - номер подфункции
Возвращаемое значение:
* eax = количество активных сетевых устройств
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_DEVICE_COUNT (255)
======================================================================
==== Функция 74, подфункция 0, Получить тип сетевого устройства. =====
@@ -4539,7 +4561,7 @@ Remarks:
* eax = тип устройства
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_DEVICE_TYPE (0)
======================================================================
==== Функция 74, подфункция 1, Получить имя сетевого устройства. =====
@@ -4554,7 +4576,7 @@ Remarks:
* В случае успеха в буфер записывается имя сетевого устройства
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_DEVICE_NAME (1)
======================================================================
======= Функция 74, подфункция 2, Сброс сетевого устройства. =========
@@ -4567,7 +4589,7 @@ Remarks:
* eax = -1 для ошибки
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RESET_DEVICE (2)
======================================================================
====== Функция 74, подфункция 3, Остановить сетевое устройство. ======
@@ -4580,7 +4602,7 @@ Remarks:
* eax = -1 для ошибки
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_STOP_DEVICE (3)
======================================================================
===== Функция 74, подфункция 4, Получить указатель на устройство =====
@@ -4593,7 +4615,7 @@ Remarks:
* eax = указатель, -1 для ошибки
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_DEVICE_POINTER (4)
======================================================================
=== Функция 74, подфункция 6, Получить количество посланых пакетов ===
@@ -4606,7 +4628,7 @@ Remarks:
* eax = количество с момента старта устройства, -1 для ошибки
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_TX_PACKET_COUNT (6)
======================================================================
=== Функция 74, подфункция 7, Получить количество принятых пакетов ===
@@ -4619,7 +4641,7 @@ Remarks:
* eax = количество с момента старта устройства, -1 для ошибки
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RX_PACKET_COUNT (7)
======================================================================
==== Функция 74, подфункция 8, Получить количество посланых байт. ====
@@ -4633,7 +4655,7 @@ Remarks:
* ebx = старшая часть
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_TX_BYTE_COUNT (8)
======================================================================
==== Функция 74, подфункция 9, Получить количество принятых байт. ====
@@ -4647,7 +4669,7 @@ Remarks:
* ebx = старшая часть
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RX_BYTE_COUNT (9)
======================================================================
======= Функция 74, подфункция 10, Получить статус соединения. =======
@@ -4668,7 +4690,7 @@ Remarks:
10b = флаг полного дуплекса
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_LINK_STATUS (10)
======================================================================
== Функция 74.11, Получить количество пакетов переданных с ошибкой. ==
@@ -4682,7 +4704,7 @@ Remarks:
устройства, -1 при ошибке
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_TX_PACKET_ERROR_COUNT (11)
======================================================================
=== Функция 74.12, Получить число пакетов отброшенных при отправке. ==
@@ -4696,7 +4718,7 @@ Remarks:
-1 при ошибке
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_TX_PACKET_DROP_COUNT (12)
======================================================================
=== Функция 74.13, Получить число пакетов утерянных при отправке. ====
@@ -4710,7 +4732,7 @@ Remarks:
-1 при ошибке
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_TX_PACKET_MISS_COUNT (13)
======================================================================
@@ -4725,7 +4747,7 @@ Remarks:
устройства, -1 при ошибке
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RX_PACKET_ERROR_COUNT (14)
======================================================================
== Функция 74.15, Получить число пакетов отброшенных при получении. ==
@@ -4739,8 +4761,8 @@ Remarks:
-1 при ошибке
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_RX_PACKET_DROP_COUNT (12)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RX_PACKET_DROP_COUNT (15)
======================================================================
=== Функция 74.16, Получить число пакетов утерянных при получении. ===
======================================================================
@@ -4753,7 +4775,7 @@ Remarks:
-1 при ошибке
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RX_PACKET_MISS_COUNT (16)
======================================================================
============== Функция 75, подфункция 0, Открыть сокет. ==============
@@ -4945,7 +4967,7 @@ Remarks:
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_GET_PAIR (10)
bl - SSF_GET_PAIR (10) / SSF_SOCKET_PAIR (10)
======================================================================
=============== Функция 76, Сетевые опции и статистика. ==============
======================================================================
@@ -4990,6 +5012,32 @@ Remarks:
---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_PROTOCOL (76)
ebx - SSF_ETHERNET_READ_MAC (0x0000)
ebx - SSF_IP4_PACKETS_SENT (0x10000)
ebx - SSF_IP4_PACKETS_RECEIVED (0x10001)
ebx - SSF_IP4_READ_IP (0x10002)
ebx - SSF_IP4_WRITE_IP (0x10003)
ebx - SSF_IP4_READ_DNS (0x10004)
ebx - SSF_IP4_WRITE_DNS (0x10005)
ebx - SSF_IP4_READ_SUBNET (0x10006)
ebx - SSF_IP4_WRITE_SUBNET (0x10007)
ebx - SSF_IP4_READ_GATEWAY (0x10008)
ebx - SSF_IP4_WRITE_GATEWAY (0x10009)
ebx - SSF_ICMP_PACKETS_SENT (0x20000)
ebx - SSF_ICMP_PACKETS_RECEIVED (0x20001)
ebx - SSF_ICMP_ECHO_REPLY (0x20003)
ebx - SSF_UDP_PACKETS_SENT (0x30000)
ebx - SSF_UDP_PACKETS_RECEIVED (0x30001)
ebx - SSF_TCP_PACKETS_SENT (0x40000)
ebx - SSF_TCP_PACKETS_RECEIVED (0x40001)
ebx - SSF_ARP_PACKETS_SENT (0x50000)
ebx - SSF_ARP_PACKETS_RECEIVED (0x50001)
ebx - SSF_ARP_GET_ENTRY_COUNT (0x50002)
ebx - SSF_ARP_READ_ENTRY (0x50003)
ebx - SSF_ARP_ADD_STATIC_ENTRY (0x50004)
ebx - SSF_ARP_DEL_ENTRY (0x50005)
ebx - SSF_ARP_SEND_ANNOUNCE (0x50006)
ebx - SSF_ARP_CONFLICTS_COUNT (0x50007)
======================================================================
============= Функция 77, подфункция 0, Создать фьютекс. =============
======================================================================
@@ -5026,7 +5074,7 @@ Remarks:
* ebx = 2 - номер подфункции
* ecx = дескриптор фьютекса
* edx = контрольное значение
* esi = таймаут в сотых секунды, 0 - ждать бесконечно
* esi = таймаут в тиках системного таймера, 0 - ждать бесконечно
Возвращаемое значение:
* eax = 0 - успешно, -1 - таймаут,
-2 - контрольное значение не соответствует
@@ -5049,35 +5097,45 @@ Remarks:
eax - SF_FUTEX (77)
ebx - SSF_WAKE (3)
======================================================================
======= Функция 77, подфункция 10, Прочитать из файла в буфер. =======
Замечания:
* Подфункции 4-7 зарезервированы и сейчас возвращают -1.
* Подфункции 8, 9 и 12 не реализованы и возвращают -EBADF.
======================================================================
======= Функция 77, подфункция 10, Прочитать из pipe. =======
======================================================================
Параметры:
* eax = 77 - номер функции
* ebx = 10 - номер подфункции
* ecx = дескриптор файла
* ecx = дескриптор pipe
* edx = указатель на буфер, куда читать
* esi = сколько байт прочитать
Возвращаемое значение:
* eax = количество прочитанных байт
* eax = количество прочитанных байт, 0 при EOF,
или -EBADF при ошибке
Замечания:
* Поддерживаются только pipe-дескрипторы.
---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77)
ebx - ...
ebx - 10
======================================================================
======== Функция 77, подфункция 11, Записать из буфера в файл. =======
======== Функция 77, подфункция 11, Записать в pipe. =======
======================================================================
Параметры:
* eax = 77 - номер функции
* ebx = 11 - номер подфункции
* ecx = дескриптор файла
* edx = указатель на буфер, откуда брать данные для записи
* ecx = дескриптор pipe
* edx = указатель на буфер, откуда брать данные для записи
* esi = сколько байт записать
Возвращаемое значение:
* eax = количество записанных байт
* eax = количество записанных байт, -EBADF при ошибке,
-EPIPE если нет читателей
Замечания:
* Поддерживаются только pipe-дескрипторы.
---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77)
ebx - ...
ebx - 11
======================================================================
=========== Функция 77, подфункция 13, Создать новый pipe. ===========
======================================================================
@@ -5089,15 +5147,15 @@ Remarks:
* eax = 77 - номер функции
* ebx = 13 - номер подфункции
* ecx = адрес pipefd
* edx = флаги. На данный момент если поднят O_CLOEXEC (0x40000), то
сисфункция завершится с ошибкой. Поэтому в качестве флагов можно
передать просто 0.
* edx = флаги. Разрешен только O_CLOEXEC (0x40000).
Любые другие биты приводят к -EINVAL.
Возвращаемое значение:
* eax = 0 если успех, иначе ошибка.
* eax = 0 если успех, иначе отрицательный код ошибки:
-EFAULT, -EINVAL, -EMFILE, -ENFILE.
---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77)
ebx - ...
ebx - 13
======================================================================
========== Функция -1 - завершить выполнение потока/процесса =========
======================================================================

View File

@@ -1972,7 +1972,7 @@ Remarks:
subfunction 2 of function 15.
---------------------- Constants for registers: ----------------------
eax - SF_BACKGROUND_GET_RECT (39)
eax - SF_BACKGROUND_GET (39)
======================================================================
== Function 39, subfunction 3 - get rect from the background image. =
======================================================================
@@ -2179,21 +2179,21 @@ Parameters:
* ecx = pointer to the buffer with size edx bytes,
where table will be written
* edx = size of color table
(must be 40 bytes for future compatibility)
(up to 192 bytes; 40 bytes for base structure)
Returned value:
* function does not return value
Format of the color table:
each item is dword-value for color 0x00RRGGBB
* +0: dword: none - reserved
* +4: dword: none - reserved
* +0: dword: frame
* +4: dword: grab
* +8: dword: work_dark - dark color of working area
used to give a user 3D-like feelings about interface elements
* +12 = +0xC: dword: work_light - light color of working area
used to give a user 3D-like feelings about interface elements
* +16 = +0x10: dword: grab_text - color of text on header
* +20 = +0x14: dword: work - color of working area
* +24 = +0x18: dword: button - color of button in working area
* +28 = +0x1C: dword: button_text - color of text on button
* +24 = +0x18: dword: work_button - color of button in working area
* +28 = +0x1C: dword: work_button_text - color of text on button
in working area
* +32 = +0x20: dword: work_text - color of text in working area
* +36 = +0x24: dword: graph - color of graphics in working area
@@ -2206,6 +2206,8 @@ Remarks:
; this function with ecx=sc
mov ecx, [sc.work_button_text] ; read text color on
; button in working area
* The table may be longer (up to 192 bytes); extra fields are copied
as-is and are interpreted by skins.
* A program itself decides to use or not to use color table.
For usage program must simply at calls to drawing functions select
color taken from the table.
@@ -2482,7 +2484,7 @@ Remarks:
======================================================================
Parameters:
* eax = 51 - function number
* ebx = 1 - unique subfunction
* ebx = 1 - subfunction number
* ecx = address of thread entry point (starting eip)
* edx = pointer to thread stack (starting esp)
Returned value:
@@ -2490,7 +2492,50 @@ Returned value:
* otherwise eax = TID - thread identifier
---------------------- Constants for registers: ----------------------
eax - SF_CREATE_THREAD (51)
eax - SF_CREATE_THREAD (51) / SF_THREAD_CONTROL (51)
ebx - SSF_CREATE_THREAD (1), SSF_GET_CURR_THREAD_SLOT (2),
SSF_GET_THREAD_PRIORITY (3), SSF_SET_THREAD_PRIORITY (4)
======================================================================
================== Function 51, subfunction 2 ========================
================== Get current thread slot number ====================
======================================================================
Parameters:
* eax = 51 - function number
* ebx = 2 - subfunction number
Returned value:
* eax = slot number of the current thread
======================================================================
================== Function 51, subfunction 3 ========================
===================== Get thread priority ============================
======================================================================
Parameters:
* eax = 51 - function number
* ebx = 3 - subfunction number
* ecx = slot number of the thread or -1 (current thread)
Returned value:
* eax = -1 - error (invalid slot number or thread terminated)
* otherwise eax = thread priority
Remarks:
* Priority range is 0..255.
0 is the highest priority and is set by default at creation.
======================================================================
================== Function 51, subfunction 4 ========================
===================== Set thread priority ============================
======================================================================
Parameters:
* eax = 51 - function number
* ebx = 4 - subfunction number
* ecx = slot number of the thread or -1 (current thread)
* edx = new thread priority
Returned value:
* eax = -1 - error (invalid slot number or thread terminated)
* otherwise eax = previous thread priority
Remarks:
* Priority range is 0..255.
0 is the highest priority and is set by default at creation.
======================================================================
==================== Function 54, subfunction 0 ======================
============== Get the number of slots in the clipboard. =============
@@ -3289,65 +3334,66 @@ Remarks:
ebx - SSF_MEM_FREE (13)
======================================================================
===================== Function 68, subfunction 14 ====================
============ Wait for signal from another program/driver. ============
================= Get kernel event (GetEvent wrapper). ===============
======================================================================
Parameters:
* eax = 68 - function number
* ebx = 14 - subfunction number
* ecx = pointer to the buffer for information (24 bytes)
* ecx = pointer to data buffer (6 dword = 24 bytes)
Returned value:
* eax = event handle
* buffer pointed to by ecx contains the following information:
* +0: dword: identifier for following data of signal
* +4: dword: data of signal (20 bytes), format of which is defined
by the first dword
* +0: dword: EVENT.code (identifier of following data)
* +4: 5 dword: EVENT.data, format depends on EVENT.code
Remarks:
* Waits indefinitely for any event in the current thread event queue.
* The priority byte in the buffer is cleared by the kernel.
---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_WAIT_SIGNAL (14)
======================================================================
============= Function 68, subfunction 16 - load driver. =============
============= Function 68, subfunction 16 - get service. =============
======================================================================
Parameters:
* eax = 68 - function number
* ebx = 16 - subfunction number
* ecx = pointer to ASCIIZ-string with driver name
* ecx = pointer to ASCIIZ-string with service name
Returned value:
* eax = 0 - failed
* otherwise eax = driver handle
* eax = pointer to SRV structure, 0 on error
Remarks:
* If the driver was not loaded yet, it is loaded;
if the driver was loaded yet, nothing happens.
* Driver name is case-sensitive.
* If the service is not loaded yet, the kernel attempts to load it
from /sys/drivers/<name>.sys.
* Service name is case-sensitive.
Maximum length of the name is 16 characters, including
terminating null character, the rest is ignored.
* Driver ABC is loaded from file /sys/drivers/ABC.sys.
---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_LOAD_DRIVER (16)
ebx - SSF_GET_SERVICE (16) / SSF_LOAD_DRIVER (16)
======================================================================
============ Function 68, subfunction 17 - driver control. ===========
============ Function 68, subfunction 17 - call service. =============
======================================================================
Parameters:
* eax = 68 - function number
* ebx = 17 - subfunction number
* ecx = pointer to the control structure:
* +0: dword: handle of driver
* +4: dword: code of driver function
* +8: dword: pointer to input data
* +12 = +0xC: dword: size of input data
* +16 = +0x10: dword: pointer to output data
* +20 = +0x14: dword: size of output data
* ecx = pointer to the IOCTL structure:
* +0: dword: service handle (pointer to SRV)
* +4: dword: io_code
* +8: dword: pointer to input data
* +12: dword: size of input data
* +16: dword: pointer to output data
* +20: dword: size of output data
Returned value:
* eax = determined by driver
* eax = value returned by the service handler, -1 on error
Remarks:
* Function codes and the structure of input/output data
are defined by driver.
* Previously one must obtain driver handle by subfunction 16.
are defined by the service.
* The service handle can be obtained by subfunction 16.
---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_CONTROL_DRIVER (17)
ebx - SSF_CALL_SERVICE (17) / SSF_CONTROL_DRIVER (17)
======================================================================
== Function 68, subfunction 18 - load DLL, specifying the encoding. ==
======================================================================
@@ -3411,7 +3457,7 @@ Remarks:
Parameters:
* eax = 68 - function number
* ebx = 21 - subfunction number
* ecx = pointer to ASCIIZ-string with driver name
* ecx = pointer to ASCIIZ-string with path to driver file
* edx = pointer to command line
Returned value:
* eax = 0 - failed
@@ -3620,6 +3666,25 @@ Remarks:
eax - SF_SYS_MISC (68)
ebx - SSF_MEM_ALLOC_RING (29)
======================================================================
=========== Function 68, subfunction 30 - unload driver. ============
======================================================================
Parameters:
* eax = 68 - function number
* ebx = 30 - subfunction number
* ecx = pointer to SRV structure (driver handle)
* edx = pointer to command line (may be 0)
Returned value:
* eax = -1 - invalid parameters
* eax = -2 - error while freeing driver memory
* otherwise eax = pointer to the next SRV structure (former SRV.fd)
Remarks:
* The driver entry is called with DRV_EXIT before unloading.
---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68)
ebx - 30
======================================================================
=========== Function 68, subfunction 31 - get driver data. ===========
======================================================================
@@ -4451,7 +4516,7 @@ Returned value:
* eax = number of active network devices
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_DEVICE_COUNT (255)
======================================================================
======== Function 74, Subfunction 0, Get network device type. ========
@@ -4464,7 +4529,7 @@ Returned value:
* eax = device type number, -1 on error
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_DEVICE_TYPE (0)
======================================================================
======== Function 74, Subfunction 1, Get network device name. ========
@@ -4479,7 +4544,7 @@ Returned value:
* The network device name is written into the buffer, on success
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_DEVICE_NAME (1)
======================================================================
========= Function 74, Subfunction 2, Reset network device. ==========
@@ -4492,7 +4557,7 @@ Returned value:
* eax = -1 on error
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RESET_DEVICE (2)
======================================================================
========== Function 74, Subfunction 3, Stop network device. ==========
@@ -4505,7 +4570,7 @@ Returned value:
* eax = -1 on error
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_STOP_DEVICE (3)
======================================================================
=========== Function 74, Subfunction 4, Get device pointer. ==========
@@ -4518,7 +4583,7 @@ Returned value:
* eax = device pointer, -1 on error
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_DEVICE_POINTER (4)
======================================================================
========= Function 74, Subfunction 6, Get packet TX counter. =========
@@ -4531,7 +4596,7 @@ Returned value:
* eax = Number of packets sent since device start, -1 on error
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_TX_PACKET_COUNT (6)
======================================================================
========= Function 74, Subfunction 7, Get packet RX counter. =========
@@ -4544,7 +4609,7 @@ Returned value:
* eax = Number of packets received since device start, -1 on error
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RX_PACKET_COUNT (7)
======================================================================
========== Function 74, Subfunction 8, Get TX byte counter. ==========
@@ -4559,7 +4624,7 @@ Returned value:
* ebx = Number of bytes sent since device start (higher dword)
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_TX_BYTE_COUNT (8)
======================================================================
========== Function 74, Subfunction 9, Get RX byte counter. ==========
@@ -4574,7 +4639,7 @@ Returned value:
* ebx = Number of bytes received since device start (higher dword)
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RX_BYTE_COUNT (9)
======================================================================
========== Function 74, Subfunction 10, Get link status. =============
@@ -4595,7 +4660,7 @@ Returned value:
ETH_LINK_1G = 1100b ; gigabit
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_LINK_STATUS (10)
======================================================================
==== Function 74, Subfunction 11, Get TX error packets counter. ======
@@ -4605,10 +4670,10 @@ Parameters:
* bl = 11 - subfunction number
* bh = device number
Returned value:
* eax = Number of erroneous packets received since device start, -1 on error
* eax = Number of erroneous packets transmitted since device start, -1 on error
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_TX_PACKET_ERROR_COUNT (11)
======================================================================
=== Function 74, Subfunction 12, Get TX dropped packets counter. =====
@@ -4621,7 +4686,7 @@ Returned value:
* eax = Number of dropped packets since device start, -1 on error
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_TX_PACKET_DROP_COUNT (12)
======================================================================
==== Function 74, Subfunction 13, Get TX missed packets counter. =====
@@ -4634,7 +4699,7 @@ Returned value:
* eax = Number of missed packets since device start, -1 on error
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_TX_PACKET_MISS_COUNT (13)
======================================================================
==== Function 74, Subfunction 14, Get RX error packets counter. ======
@@ -4647,7 +4712,7 @@ Returned value:
* eax = Number of erroneous packets received since device start, -1 on error
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RX_PACKET_ERROR_COUNT (14)
======================================================================
=== Function 74, Subfunction 15, Get RX dropped packets counter. =====
@@ -4660,8 +4725,8 @@ Returned value:
* eax = Number of dropped packets since device start, -1 on error
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
bl - SSF_RX_PACKET_DROP_COUNT (12)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RX_PACKET_DROP_COUNT (15)
======================================================================
==== Function 74, Subfunction 16, Get RX missed packets counter. =====
======================================================================
@@ -4673,7 +4738,7 @@ Returned value:
* eax = Number of missed packets since device start, -1 on error
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74)
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RX_PACKET_MISS_COUNT (16)
======================================================================
============== Function 75, Subfunction 0, Open socket. ==============
@@ -4867,7 +4932,7 @@ Returned value:
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_SOCKET (75)
bl - SSF_GET_PAIR (10)
bl - SSF_GET_PAIR (10) / SSF_SOCKET_PAIR (10)
======================================================================
============ Function 76, Network options and statistics. ============
======================================================================
@@ -5174,6 +5239,32 @@ Returned value:
---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_PROTOCOL (76)
ebx - SSF_ETHERNET_READ_MAC (0x0000)
ebx - SSF_IP4_PACKETS_SENT (0x10000)
ebx - SSF_IP4_PACKETS_RECEIVED (0x10001)
ebx - SSF_IP4_READ_IP (0x10002)
ebx - SSF_IP4_WRITE_IP (0x10003)
ebx - SSF_IP4_READ_DNS (0x10004)
ebx - SSF_IP4_WRITE_DNS (0x10005)
ebx - SSF_IP4_READ_SUBNET (0x10006)
ebx - SSF_IP4_WRITE_SUBNET (0x10007)
ebx - SSF_IP4_READ_GATEWAY (0x10008)
ebx - SSF_IP4_WRITE_GATEWAY (0x10009)
ebx - SSF_ICMP_PACKETS_SENT (0x20000)
ebx - SSF_ICMP_PACKETS_RECEIVED (0x20001)
ebx - SSF_ICMP_ECHO_REPLY (0x20003)
ebx - SSF_UDP_PACKETS_SENT (0x30000)
ebx - SSF_UDP_PACKETS_RECEIVED (0x30001)
ebx - SSF_TCP_PACKETS_SENT (0x40000)
ebx - SSF_TCP_PACKETS_RECEIVED (0x40001)
ebx - SSF_ARP_PACKETS_SENT (0x50000)
ebx - SSF_ARP_PACKETS_RECEIVED (0x50001)
ebx - SSF_ARP_GET_ENTRY_COUNT (0x50002)
ebx - SSF_ARP_READ_ENTRY (0x50003)
ebx - SSF_ARP_ADD_STATIC_ENTRY (0x50004)
ebx - SSF_ARP_DEL_ENTRY (0x50005)
ebx - SSF_ARP_SEND_ANNOUNCE (0x50006)
ebx - SSF_ARP_CONFLICTS_COUNT (0x50007)
======================================================================
========== Function 77, Subfunction 0, Create futex object ===========
======================================================================
@@ -5217,10 +5308,10 @@ Parameters:
* esi = timeout in system ticks or 0 for infinity
Returned value:
* eax = 0 - successfull
-1 - timeout
-2 - futex dword does not have the same value as edx
-1 - timeout
-2 - futex dword does not have the same value as edx
Remarks:
* This functionn tests that the value at the futex dword still
* This function tests that the value at the futex dword still
contains the expected control value, and if so, then sleeps
waiting for a wake operation on the futex.
* The futex handle must have been created by subfunction 0
@@ -5248,6 +5339,62 @@ Remarks:
eax - SF_FUTEX (77)
ebx - SSF_WAKE (3)
======================================================================
Remarks:
* Subfunctions 4-7 are reserved and currently return -1.
* Subfunctions 8, 9 and 12 are not implemented and return -EBADF.
======================================================================
=========== Function 77, Subfunction 10, Read from pipe. ============
======================================================================
Parameters:
* eax = 77 - function number
* ebx = 10 - subfunction number
* ecx = pipe descriptor
* edx = pointer to destination buffer
* esi = number of bytes to read
Returned value:
* eax = number of bytes read, 0 on EOF, or -EBADF on error
Remarks:
* Only pipe descriptors are supported.
---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77)
ebx - 10
======================================================================
=========== Function 77, Subfunction 11, Write to pipe. =============
======================================================================
Parameters:
* eax = 77 - function number
* ebx = 11 - subfunction number
* ecx = pipe descriptor
* edx = pointer to source buffer
* esi = number of bytes to write
Returned value:
* eax = number of bytes written, -EBADF on error, -EPIPE if no readers
Remarks:
* Only pipe descriptors are supported.
---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77)
ebx - 11
======================================================================
========== Function 77, Subfunction 13, Create pipe. ================
======================================================================
Parameters:
* eax = 77 - function number
* ebx = 13 - subfunction number
* ecx = pointer to pipefd[2] array (two dword descriptors)
* edx = flags (only O_CLOEXEC is allowed)
Returned value:
* eax = 0 on success, or negative errno value on error:
-EFAULT, -EINVAL, -EMFILE, -ENFILE
Remarks:
* On success, pipefd[0] is a read descriptor and pipefd[1] is a
write descriptor.
---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77)
ebx - 13
======================================================================
=== Function 80 - file system interface with parameter of encoding ===
======================================================================
Parameters:

View File

@@ -70,11 +70,11 @@ SF_SYSTEM=18
SSF_WINDOW_BEHAVIOR=25 ; window focus relation with other windows
SSSF_GET_WB=1
SSSF_SET_WB=2
SF_MIDI=20
SSF_RESET=1
SSF_OUTPUT=2
SF_MIDI=20 ; deprecated/undefined in current kernel
SSF_RESET=1 ; deprecated
SSF_OUTPUT=2 ; deprecated
SF_SYSTEM_SET=21
SSF_MPU_MIDI_BASE=1
SSF_MPU_MIDI_BASE=1 ; not used (reserved)
SSF_KEYBOARD_LAYOUT=2
SSF_SYS_LANG=5
SSF_ACCESS_HD_LBA=11 ; setting of low-level access to HD
@@ -112,7 +112,7 @@ SF_BACKGROUND_GET=39
;SSF_PIXEL_BG=2
;SSF_MODE_BG=4
SF_SET_EVENTS_MASK=40 ; turn on/off desired events
SF_PORT_IN_OUT=43 ; input/output to a port
SF_PORT_IN_OUT=43 ; deprecated/undefined in current kernel
SF_SET_PORTS=46 ; reserve/free a group of input/output ports
SF_DRAW_NUMBER=47 ; draw number to the window
SF_STYLE_SETTINGS=48
@@ -132,6 +132,11 @@ SF_STYLE_SETTINGS=48
SF_APM=49
SF_SET_WINDOW_SHAPE=50
SF_CREATE_THREAD=51
SF_THREAD_CONTROL=51
SSF_CREATE_THREAD=1
SSF_GET_CURR_THREAD_SLOT=2
SSF_GET_THREAD_PRIORITY=3
SSF_SET_THREAD_PRIORITY=4
SF_CLIPBOARD=54
SSF_GET_SLOT_COUNT=0 ; get the number of slots in the clipboard
SSF_READ_CB=1
@@ -184,9 +189,11 @@ SF_SYS_MISC=68
SSF_HEAP_INIT=11
SSF_MEM_ALLOC=12
SSF_MEM_FREE=13
SSF_WAIT_SIGNAL=14 ; wait for signal from another program/driver
SSF_LOAD_DRIVER=16
SSF_CONTROL_DRIVER=17
SSF_WAIT_SIGNAL=14 ; GetEvent wrapper (wait for kernel event)
SSF_GET_SERVICE=16
SSF_CALL_SERVICE=17
SSF_LOAD_DRIVER=16 ; alias (deprecated name)
SSF_CONTROL_DRIVER=17 ; alias (deprecated name)
SSF_LOAD_DLL=19
SSF_MEM_REALLOC=20
SSF_LOAD_DRIVER_PE=21
@@ -196,6 +203,7 @@ SF_SYS_MISC=68
SSF_SET_EXCEPTION_STATE=25
SSF_MEM_FREE_EXT=26
SSF_LOAD_FILE=27
SSF_MEM_ALLOC_RING=29
SF_DEBUG=69
SSF_SET_MESSAGE_AREA=0
SSF_GET_REGISTERS=1
@@ -222,6 +230,7 @@ SF_SET_CAPTION=71
SF_SEND_MESSAGE=72
SF_BLITTER=73
SF_NETWORK_DEVICE=74
SF_NETWORK_GET=74 ; alias
SSF_DEVICE_COUNT=255 ; get number of active network devices
SSF_DEVICE_TYPE=0
SSF_DEVICE_NAME=1
@@ -251,6 +260,7 @@ SF_NETWORK_SOCKET=75
SSF_SET_OPTIONS=8
SSF_GET_OPTIONS=9
SSF_SOCKET_PAIR=10
SSF_GET_PAIR=10 ; alias
SF_NETWORK_PROTOCOL=76
SSF_ETHERNET_READ_MAC=0
SSF_IP4_PACKETS_SENT=10000h

View File

@@ -70,11 +70,11 @@ SF_SYSTEM=18
SSF_WINDOW_BEHAVIOR=25 ; window focus relation with other windows
SSSF_GET_WB=1
SSSF_SET_WB=2
SF_MIDI=20
SSF_RESET=1
SSF_OUTPUT=2
SF_MIDI=20 ; deprecated/undefined in current kernel
SSF_RESET=1 ; deprecated
SSF_OUTPUT=2 ; deprecated
SF_SYSTEM_SET=21
SSF_MPU_MIDI_BASE=1
SSF_MPU_MIDI_BASE=1 ; not used (reserved)
SSF_KEYBOARD_LAYOUT=2
SSF_SYS_LANG=5
SSF_ACCESS_HD_LBA=11 ; setting of low-level access to HD
@@ -112,7 +112,7 @@ SF_BACKGROUND_GET=39
;SSF_PIXEL_BG=2
;SSF_MODE_BG=4
SF_SET_EVENTS_MASK=40 ; turn on/off desired events
SF_PORT_IN_OUT=43 ; input/output to a port
SF_PORT_IN_OUT=43 ; deprecated/undefined in current kernel
SF_SET_PORTS=46 ; reserve/free a group of input/output ports
SF_DRAW_NUMBER=47 ; draw number to the window
SF_STYLE_SETTINGS=48
@@ -132,6 +132,11 @@ SF_STYLE_SETTINGS=48
SF_APM=49
SF_SET_WINDOW_SHAPE=50
SF_CREATE_THREAD=51
SF_THREAD_CONTROL=51
SSF_CREATE_THREAD=1
SSF_GET_CURR_THREAD_SLOT=2
SSF_GET_THREAD_PRIORITY=3
SSF_SET_THREAD_PRIORITY=4
SF_CLIPBOARD=54
SSF_GET_SLOT_COUNT=0 ; get the number of slots in the clipboard
SSF_READ_CB=1
@@ -184,9 +189,11 @@ SF_SYS_MISC=68
SSF_HEAP_INIT=11
SSF_MEM_ALLOC=12
SSF_MEM_FREE=13
SSF_WAIT_SIGNAL=14 ; wait for signal from another program/driver
SSF_LOAD_DRIVER=16
SSF_CONTROL_DRIVER=17
SSF_WAIT_SIGNAL=14 ; GetEvent wrapper (wait for kernel event)
SSF_GET_SERVICE=16
SSF_CALL_SERVICE=17
SSF_LOAD_DRIVER=16 ; alias (deprecated name)
SSF_CONTROL_DRIVER=17 ; alias (deprecated name)
SSF_LOAD_DLL=19
SSF_MEM_REALLOC=20
SSF_LOAD_DRIVER_PE=21
@@ -196,6 +203,7 @@ SF_SYS_MISC=68
SSF_SET_EXCEPTION_STATE=25
SSF_MEM_FREE_EXT=26
SSF_LOAD_FILE=27
SSF_MEM_ALLOC_RING=29
SF_DEBUG=69
SSF_SET_MESSAGE_AREA=0
SSF_GET_REGISTERS=1
@@ -222,6 +230,7 @@ SF_SET_CAPTION=71
SF_SEND_MESSAGE=72
SF_BLITTER=73
SF_NETWORK_DEVICE=74
SF_NETWORK_GET=74 ; alias
SSF_DEVICE_COUNT=255 ; get number of active network devices
SSF_DEVICE_TYPE=0
SSF_DEVICE_NAME=1
@@ -251,6 +260,7 @@ SF_NETWORK_SOCKET=75
SSF_SET_OPTIONS=8
SSF_GET_OPTIONS=9
SSF_SOCKET_PAIR=10
SSF_GET_PAIR=10 ; alias
SF_NETWORK_PROTOCOL=76
SSF_ETHERNET_READ_MAC=0
SSF_IP4_PACKETS_SENT=10000h