Subversion Repositories Kolibri OS

Rev

Rev 9047 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9047 Rev 9048
Line 3658... Line 3658...
3658
Возвращаемое значение:
3658
Возвращаемое значение:
3659
  * eax = указатель на загруженный файл или 0
3659
  * eax = указатель на загруженный файл или 0
3660
  * edx = размер загруженного файла или 0
3660
  * edx = размер загруженного файла или 0
3661
Примечания:
3661
Примечания:
3662
  * функция загружает и, при необходимости, распаковывает файл (kunpack)
3662
  * функция загружает и, при необходимости, распаковывает файл (kunpack)
-
 
3663
======================================================================
-
 
3664
=========== Функция 68, подфункция 29 - загрузить PE-файл ============
-
 
3665
======================================================================
-
 
3666
Параметры:
-
 
3667
  * eax = 68 - номер функции
-
 
3668
  * ebx = 29 - номер подфункции
-
 
3669
  * ecx = указатель на строку с путём к файлу,
-
 
3670
    правила формирования строки указаны в описании функции 70.
-
 
3671
Возвращаемое значение:
-
 
3672
  * eax > 0xFFFFF000 - произошла ошибка, -eax = код ошибки
-
 
3673
  * eax <= 0xFFFFF000 - адрес загруженного файла
-
 
3674
Примечания:
-
 
3675
  * функция предназначена только для системного загрузчика внутри
-
 
3676
    kolibri.dll; загруженный файл ещё не готов к работе, ему требуется
-
 
3677
    донастройка. Вместо неё используйте
-
 
3678
    функцию dlopen() из kolibri.dll.
-
 
3679
======================================================================
-
 
3680
=========== Функция 68, подфункция 30 - выгрузить PE-файл ============
-
 
3681
======================================================================
-
 
3682
Параметры:
-
 
3683
  * eax = 68 - номер функции
-
 
3684
  * ebx = 30 - номер подфункции
-
 
3685
  * ecx = адрес загруженного PE-файла
-
 
3686
Возвращаемое значение:
-
 
3687
  * eax = 0 - успешно
-
 
3688
  * eax = -1 - адрес не соответствует никакому загруженному файлу
-
 
3689
Примечания:
-
 
3690
  * функция предназначена только для системного загрузчика внутри
-
 
3691
    kolibri.dll. Вместо неё используйте функцию dlclose()
-
 
3692
    из kolibri.dll.
-
 
3693
======================================================================
-
 
3694
==== Функция 68, подфункция 31 - изменить права доступа к памяти =====
-
 
3695
======================================================================
-
 
3696
Параметры:
-
 
3697
  * eax = 68 - номер функции
-
 
3698
  * ebx = 31 - номер подфункции
-
 
3699
  * ecx = новые права доступа: ноль или более из следующих бит:
-
 
3700
    * PROT_READ = 1 - разрешить чтение
-
 
3701
    * PROT_WRITE = 2 - разрешить запись
-
 
3702
    * PROT_EXEC = 4 - разрешить исполнение
-
 
3703
  * edx = начальный адрес участка памяти
-
 
3704
  * esi = размер участка памяти в байтах
-
 
3705
Возвращаемое значение:
-
 
3706
  * eax = -1 - ошибка
-
 
3707
  * иначе eax = старые права доступа
-
 
3708
Примечания:
-
 
3709
  * Функция изменяет права целым страницам (4096 байт). Функция
-
 
3710
    меняет права доступа у всех страниц, пересекающихся с запрошенным
-
 
3711
    участком.
-
 
3712
  * Функция считает ошибкой передачу участка памяти от функции 68.22.
-
 
3713
  * Если часть переданного участка памяти корректна, а часть - нет,
-
 
3714
    то функция возвращает ошибку, но не гарантируется, изменились ли
-
 
3715
    права доступа у корректной части.
-
 
3716
  * Если не было ошибки, то функция возвращает старые права доступа
-
 
3717
    у первой из запрошенных страниц.
-
 
3718
  * Текущая реализация не поддерживает разрешения исполнения отдельно
-
 
3719
    от чтения. Поэтому бит PROT_EXEC игнорируется на входе и копирует
-
 
3720
    разрешение на чтение на выходе.
-
 
3721
---------------------- Константы для регистров: ----------------------
-
 
3722
  eax - SF_SYS_MISC (68)
-
 
3723
  ebx - SSF_MPROTECT (31)
Line 3663... Line 3724...
3663
 
3724
 
3664
======================================================================
3725
======================================================================
3665
======================== Функция 69 - отладка. =======================
3726
======================== Функция 69 - отладка. =======================
3666
======================================================================
3727
======================================================================