SysFn30/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
(фн30 - "текущая папка" - это звучит прикольно)
 
 
(7 intermediate revisions by 4 users not shown)
Line 1: Line 1:
''' Функция 30 - работа с активной папкой '''
'''Функция 30''' - работа с активной папкой


----
----


=== Подфункция 1 - установить активную папку для потока. ===
=== Подфункция 1 - установить текущую папку для потока. ===


Параметры:
Параметры:
* eax = 30 - номер функции
:* eax = 30 - номер функции
* ebx = 1 - номер подфункции
:* ebx = 1 - номер подфункции
* ecx = указатель на ASCIIZ-строку с путём к новой текущей папке
:* 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)


=== Подфункция 2 - получить активную папку для потока. ===
=== Подфункция 3 - установить доп. системную директорию для ядра. ===


Параметры:
Параметры:
* eax = 30 - номер функции
:* eax = 30 - номер функции
* ebx = 2 - номер подфункции
:* ebx = 3 - номер подфункции
* ecx = указатель на буфер
:* ecx = указатель на блок данных:
* edx = размер буфера
key    rb  64
path    rb  64
Пример:
align 64
key    db  'kolibrios',0  ; ключ должен быть в нижнем регистре
align 64
path    db  'HD0/1',0


Возвращаемое значение:
Возвращаемое значение:
* eax = длина имени активной папки (включая завершающий 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)
Замечания:
Замечания:
* Если размера буфера недостаточно для копирования всего имени, копируются только первые (edx-1) байт и в конце ставится завершающий 0.
:* Если размера буфера недостаточно для копирования всего пути, копируются только часть строки и в конце ставится завершающий 0.
:* По умолчанию, текущая папка для потока - "/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".
  • При создании процесса/потока текущая папка наследуется от родителя.