Rev 9047 | Go to most recent revision | 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 | ====================================================================== |