forked from KolibriOS/kolibrios
Adding f.30.3 to mount the additional system directory (this is used by SEARCHAP).
git-svn-id: svn://kolibrios.org@3663 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
b7c579d4b9
commit
799f7cdc6b
@ -1794,6 +1794,23 @@ dd 1675
|
||||
* При создании процесса/потока текущая папка наследуется от
|
||||
родителя.
|
||||
|
||||
---- Подфункция 3 - установить доп. системную директорию для ядра ----
|
||||
Параметры:
|
||||
* eax = 30 - номер функции
|
||||
* ebx = 3 - номер подфункции
|
||||
* ecx = указатель на блок данных:
|
||||
sysdir_name rb 64
|
||||
sysdir_path rb 64
|
||||
Пример:
|
||||
dir_name1 db 'addappl',0
|
||||
rb 64-8
|
||||
dir_path1 db 'HD0/1',0
|
||||
rb 64-6
|
||||
Возвращаемое значение:
|
||||
* функция не возвращает значения
|
||||
Замечания:
|
||||
* Функция может быть вызвана только 1 раз за 1 сессию работы ОС.
|
||||
|
||||
======================================================================
|
||||
========= Функция 34 - узнать кому принадлежит точка экрана. =========
|
||||
======================================================================
|
||||
|
@ -1776,6 +1776,23 @@ Remarks:
|
||||
* At process/thread creation the current folder will be inherited
|
||||
from the parent.
|
||||
|
||||
--- Subfunction 3 - install the add.system directory for the kernel --
|
||||
Parameters:
|
||||
* eax = 30 - function number
|
||||
* ebx = 3 - subfunction number
|
||||
* ecx = pointer to a block of data:
|
||||
sysdir_name rb 64
|
||||
sysdir_path rb 64
|
||||
For example:
|
||||
dir_name1 db 'addappl',0
|
||||
rb 64-8
|
||||
dir_path1 db 'HD0/1',0
|
||||
rb 64-6
|
||||
Returned value:
|
||||
* function does not return value
|
||||
Remarks:
|
||||
* The function can be called only 1 time for 1 session of the OS.
|
||||
|
||||
======================================================================
|
||||
========= Function 34 - who owner the pixel on the screen. ===========
|
||||
======================================================================
|
||||
|
@ -934,6 +934,12 @@ biosdisk_enum_root:
|
||||
ret
|
||||
|
||||
process_replace_file_name:
|
||||
; in
|
||||
; esi - path with filename(f.70)
|
||||
;
|
||||
; out
|
||||
; ebp - full filename
|
||||
|
||||
mov ebp, [full_file_name_table]
|
||||
mov edi, [full_file_name_table.size]
|
||||
dec edi
|
||||
@ -975,6 +981,10 @@ process_replace_file_name:
|
||||
.ret:
|
||||
ret
|
||||
|
||||
uglobal
|
||||
lock_flag_for_f30_3 rb 1
|
||||
endg
|
||||
|
||||
sys_current_directory:
|
||||
; mov esi, [current_slot]
|
||||
; mov esi, [esi+APPDATA.cur_dir]
|
||||
@ -988,7 +998,42 @@ sys_current_directory:
|
||||
jz .set
|
||||
dec ebx
|
||||
jz .get
|
||||
dec ebx
|
||||
jz .mount_additional_directory
|
||||
ret
|
||||
|
||||
.mount_additional_directory:
|
||||
; sysfunction 30.2: [for app] eax=30,ebx=3,ecx->dir name+dir path (128)
|
||||
; for our code: nothing
|
||||
|
||||
; check lock of the function
|
||||
cmp [lock_flag_for_f30_3], 1
|
||||
je @f
|
||||
|
||||
mov esi, ecx
|
||||
mov edi, sysdir_name1
|
||||
; copying fake directory name
|
||||
mov ecx, 63
|
||||
cld
|
||||
rep movsb
|
||||
; terminator of name, in case if we get the inlet trash
|
||||
inc esi
|
||||
xor eax, eax
|
||||
stosb
|
||||
; copying real directory path for mounting
|
||||
mov ecx, 63
|
||||
rep movsb
|
||||
; terminator of name, in case if we get the inlet trash
|
||||
xor eax, eax
|
||||
stosb
|
||||
; increase the pointer of inputs for procedure "process_replace_file_name"
|
||||
mov [full_file_name_table.size], 2
|
||||
; block the ability to call f.30.3 because for one session is necessary
|
||||
; for us only once
|
||||
mov [lock_flag_for_f30_3], 1
|
||||
@@:
|
||||
ret
|
||||
|
||||
.get:
|
||||
; sysfunction 30.2: [for app] eax=30,ebx=2,ecx->buffer,edx=len
|
||||
; for our code: ebx->buffer,ecx=len
|
||||
|
@ -32,6 +32,17 @@ uglobal
|
||||
; Parser_params will initialize: sysdir_name = "sys", sysdir_path = <sysdir>
|
||||
sysdir_name rb 64
|
||||
sysdir_path rb 64
|
||||
sysdir_name1 rb 64
|
||||
sysdir_path1 rb 64
|
||||
|
||||
; for example:
|
||||
;dir_name1 db 'addappl',0
|
||||
; rb 64-8
|
||||
;dir_path1 db 'HD0/1',0
|
||||
; rb 64-6
|
||||
endg
|
||||
|
||||
uglobal
|
||||
tmp_file_name_table dd ?
|
||||
endg
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user