Difference between revisions of "SysFn30/ru"
Jump to navigation
Jump to search
(Дополнено) |
Pathoswithin (talk | contribs) |
||
(6 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | ''' Функция 30 - работа с активной папкой | + | '''Функция 30''' - работа с активной папкой |
---- | ---- | ||
− | === Подфункция 1 - установить | + | === Подфункция 1 - установить текущую папку для потока. === |
Параметры: | Параметры: | ||
− | * eax = 30 - номер функции | + | :* eax = 30 - номер функции |
− | * ebx = 1 - номер подфункции | + | :* ebx = 1 - номер подфункции |
− | * ecx = указатель на | + | :* ecx = указатель на строку с путём к новой текущей папке, правила формирования строки указаны в описании функции 70. |
+ | Возвращаемое значение: | ||
+ | :* функция не возвращает значения | ||
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_CURRENT_FOLDER (30) | ||
+ | ::ebx - SSF_SET_CF (1) | ||
+ | |||
+ | === Подфункция 2 - получить активную папку для потока. === | ||
+ | Параметры: | ||
+ | :* eax = 30 - номер функции | ||
+ | :* ebx = 2 - номер подфункции | ||
+ | :* ecx = указатель на буфер | ||
+ | :* edx = размер буфера | ||
Возвращаемое значение: | Возвращаемое значение: | ||
− | * | + | :* eax = длина имени текущей папки (включая завершающий 0) |
+ | Замечания: | ||
+ | :* Если размера буфера недостаточно для копирования всего имени, копируются только первые (edx-1) байт и в конце ставится завершающий 0. | ||
+ | :* По умолчанию, текущая папка для потока - "/rd/1". | ||
+ | :* При создании процесса/потока текущая папка наследуется от родителя. | ||
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_CURRENT_FOLDER (30) | ||
+ | ::ebx - SSF_GET_CF (2) | ||
− | === Подфункция | + | === Подфункция 3 - установить доп. системную директорию для ядра. === |
Параметры: | Параметры: | ||
− | * eax = 30 - номер функции | + | :* eax = 30 - номер функции |
− | * ebx = | + | :* ebx = 3 - номер подфункции |
− | * ecx = указатель на | + | :* ecx = указатель на блок данных: |
− | + | key rb 64 | |
+ | path rb 64 | ||
+ | Пример: | ||
+ | align 64 | ||
+ | key db 'kolibrios',0 ; ключ должен быть в нижнем регистре | ||
+ | align 64 | ||
+ | path db 'HD0/1',0 | ||
Возвращаемое значение: | Возвращаемое значение: | ||
− | * eax | + | :* функция не возвращает значения |
+ | Замечания: | ||
+ | :* Функция может быть вызвана только 1 раз за 1 сессию работы ОС. | ||
+ | :* При вводе пути символьный ключ не зависит от кодировки. | ||
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_CURRENT_FOLDER (30) | ||
+ | ::ebx - SSF_ADD_SYS_FOLDER (3) | ||
+ | === Подфункция 4 - установить текущую папку с указанием кодировки. === | ||
+ | Параметры: | ||
+ | :* eax = 30 - номер функции | ||
+ | :* ebx = 4 - номер подфункции | ||
+ | :* ecx = указатель на строку с путём к новой текущей папке | ||
+ | :* edx = кодировка строки, подробности указаны в описании функции 80. | ||
+ | Возвращаемое значение: | ||
+ | :* функция не возвращает значения | ||
+ | |||
+ | === Подфункция 5 - получить текущую папку с указанием кодировки. === | ||
+ | Параметры: | ||
+ | :* eax = 30 - номер функции | ||
+ | :* ebx = 5 - номер подфункции | ||
+ | :* ecx = указатель на буфер | ||
+ | :* edx = размер буфера | ||
+ | :* esi = кодировка строки | ||
+ | Возвращаемое значение: | ||
+ | :* eax = длина строки в байтах (включая завершающий 0) | ||
Замечания: | Замечания: | ||
− | * Если размера буфера недостаточно для копирования всего | + | :* Если размера буфера недостаточно для копирования всего пути, копируются только часть строки и в конце ставится завершающий 0. |
− | * По умолчанию, текущая папка для потока - "/rd/1". | + | :* По умолчанию, текущая папка для потока - "/rd/1". |
− | * При создании процесса/потока текущая папка наследуется от | + | :* При создании процесса/потока текущая папка наследуется от родителя. |
− | родителя. | ||
{{System_functions}} | {{System_functions}} | ||
[[Category: SysCalls]] | [[Category: SysCalls]] |
Latest revision as of 23:19, 8 January 2017
Функция 30 - работа с активной папкой
Подфункция 1 - установить текущую папку для потока.
Параметры:
- eax = 30 - номер функции
- ebx = 1 - номер подфункции
- ecx = указатель на строку с путём к новой текущей папке, правила формирования строки указаны в описании функции 70.
Возвращаемое значение:
- функция не возвращает значения
Константы для регистров:
- eax - SF_CURRENT_FOLDER (30)
- ebx - SSF_SET_CF (1)
Подфункция 2 - получить активную папку для потока.
Параметры:
- eax = 30 - номер функции
- ebx = 2 - номер подфункции
- ecx = указатель на буфер
- edx = размер буфера
Возвращаемое значение:
- eax = длина имени текущей папки (включая завершающий 0)
Замечания:
- Если размера буфера недостаточно для копирования всего имени, копируются только первые (edx-1) байт и в конце ставится завершающий 0.
- По умолчанию, текущая папка для потока - "/rd/1".
- При создании процесса/потока текущая папка наследуется от родителя.
Константы для регистров:
- eax - SF_CURRENT_FOLDER (30)
- ebx - SSF_GET_CF (2)
Подфункция 3 - установить доп. системную директорию для ядра.
Параметры:
- eax = 30 - номер функции
- ebx = 3 - номер подфункции
- ecx = указатель на блок данных:
key rb 64 path rb 64
Пример:
align 64 key db 'kolibrios',0 ; ключ должен быть в нижнем регистре align 64 path db 'HD0/1',0
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- Функция может быть вызвана только 1 раз за 1 сессию работы ОС.
- При вводе пути символьный ключ не зависит от кодировки.
Константы для регистров:
- eax - SF_CURRENT_FOLDER (30)
- ebx - SSF_ADD_SYS_FOLDER (3)
Подфункция 4 - установить текущую папку с указанием кодировки.
Параметры:
- eax = 30 - номер функции
- ebx = 4 - номер подфункции
- ecx = указатель на строку с путём к новой текущей папке
- edx = кодировка строки, подробности указаны в описании функции 80.
Возвращаемое значение:
- функция не возвращает значения
Подфункция 5 - получить текущую папку с указанием кодировки.
Параметры:
- eax = 30 - номер функции
- ebx = 5 - номер подфункции
- ecx = указатель на буфер
- edx = размер буфера
- esi = кодировка строки
Возвращаемое значение:
- eax = длина строки в байтах (включая завершающий 0)
Замечания:
- Если размера буфера недостаточно для копирования всего пути, копируются только часть строки и в конце ставится завершающий 0.
- По умолчанию, текущая папка для потока - "/rd/1".
- При создании процесса/потока текущая папка наследуется от родителя.
|