Difference between revisions of "SysFn30/ru"

From KolibriOS wiki
Jump to navigation Jump to search
m
Line 8: Line 8:
 
:* eax = 30 - номер функции
 
:* eax = 30 - номер функции
 
:* ebx = 1 - номер подфункции
 
:* ebx = 1 - номер подфункции
:* ecx = указатель на ASCIIZ-строку с путём к новой текущей папке
+
:* ecx = указатель на строку с путём к новой текущей папке, правила формирования строки указаны в описании функции 70.
 
Возвращаемое значение:
 
Возвращаемое значение:
 
:* функция не возвращает значения
 
:* функция не возвращает значения
Line 43: Line 43:
 
:* ebx = 3 - номер подфункции
 
:* ebx = 3 - номер подфункции
 
:* ecx = указатель на блок данных:
 
:* ecx = указатель на блок данных:
:::::sysdir_name:: rb 64
+
::для кодировки cp866:
:::::sysdir_path:: rb 64
+
key    rb  64
Пример:
+
path    rb 64
  dir_name1      db 'KolibriOS',0
+
::для кодировки UTF-16LE:
                rb 64-10
+
key    rb 64
  dir_path1      db 'HD0/1',0
+
        dw  2
                rb 64-6
+
path    rw  31
 +
::Пример:
 +
  align 64
 +
key    db 'kolibrios',0   ; ключ должен быть в нижнем регистре
 +
align 64
 +
  path    db 'HD0/1',0
 +
 
 
Возвращаемое значение:
 
Возвращаемое значение:
 
:* функция не возвращает значения
 
:* функция не возвращает значения
 
Замечания:
 
Замечания:
 
:* Функция может быть вызвана только 1 раз за 1 сессию работы ОС.
 
:* Функция может быть вызвана только 1 раз за 1 сессию работы ОС.
 +
:* Кодировка не влияет на символьный ключ.
  
 
'''Константы для регистров:'''
 
'''Константы для регистров:'''
 
::eax - SF_CURRENT_FOLDER (30)
 
::eax - SF_CURRENT_FOLDER (30)
 
::ebx - SSF_ADD_SYS_FOLDER (3)
 
::ebx - SSF_ADD_SYS_FOLDER (3)
 +
 +
=== Подфункция 4 - получить активную папку в кодировке UTF-16LE. ===
 +
 +
Параметры:
 +
:* eax = 30 - номер функции
 +
:* ebx = 4 - номер подфункции
 +
:* ecx = указатель на буфер
 +
:* edx = размер буфера
 +
Возвращаемое значение:
 +
:* eax = длина имени текущей папки (включая завершающий 0)
 +
Замечания:
 +
:* Если размера буфера недостаточно для копирования всего имени,
 +
::копируются только первые (edx-2) байт и в конце ставится
 +
::завершающий 0.
 +
:* По умолчанию, текущая папка для потока - "/rd/1".
 +
:* При создании процесса/потока текущая папка наследуется от
 +
::родителя.
  
 
{{System_functions}}
 
{{System_functions}}
 
[[Category: SysCalls]]
 
[[Category: SysCalls]]

Revision as of 03:22, 4 September 2016

Функция 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 = указатель на блок данных:
для кодировки cp866:
key     rb  64
path    rb  64
для кодировки UTF-16LE:
key     rb  64
        dw  2
path    rw  31
Пример:
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 - получить активную папку в кодировке UTF-16LE.

Параметры:

  • eax = 30 - номер функции
  • ebx = 4 - номер подфункции
  • ecx = указатель на буфер
  • edx = размер буфера

Возвращаемое значение:

  • eax = длина имени текущей папки (включая завершающий 0)

Замечания:

  • Если размера буфера недостаточно для копирования всего имени,
копируются только первые (edx-2) байт и в конце ставится
завершающий 0.
  • По умолчанию, текущая папка для потока - "/rd/1".
  • При создании процесса/потока текущая папка наследуется от
родителя.