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 - узнать кому принадлежит точка экрана. =========
|
========= Функция 34 - узнать кому принадлежит точка экрана. =========
|
||||||
======================================================================
|
======================================================================
|
||||||
|
@ -1776,6 +1776,23 @@ Remarks:
|
|||||||
* At process/thread creation the current folder will be inherited
|
* At process/thread creation the current folder will be inherited
|
||||||
from the parent.
|
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. ===========
|
========= Function 34 - who owner the pixel on the screen. ===========
|
||||||
======================================================================
|
======================================================================
|
||||||
|
@ -934,6 +934,12 @@ biosdisk_enum_root:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
process_replace_file_name:
|
process_replace_file_name:
|
||||||
|
; in
|
||||||
|
; esi - path with filename(f.70)
|
||||||
|
;
|
||||||
|
; out
|
||||||
|
; ebp - full filename
|
||||||
|
|
||||||
mov ebp, [full_file_name_table]
|
mov ebp, [full_file_name_table]
|
||||||
mov edi, [full_file_name_table.size]
|
mov edi, [full_file_name_table.size]
|
||||||
dec edi
|
dec edi
|
||||||
@ -975,6 +981,10 @@ process_replace_file_name:
|
|||||||
.ret:
|
.ret:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
uglobal
|
||||||
|
lock_flag_for_f30_3 rb 1
|
||||||
|
endg
|
||||||
|
|
||||||
sys_current_directory:
|
sys_current_directory:
|
||||||
; mov esi, [current_slot]
|
; mov esi, [current_slot]
|
||||||
; mov esi, [esi+APPDATA.cur_dir]
|
; mov esi, [esi+APPDATA.cur_dir]
|
||||||
@ -988,7 +998,42 @@ sys_current_directory:
|
|||||||
jz .set
|
jz .set
|
||||||
dec ebx
|
dec ebx
|
||||||
jz .get
|
jz .get
|
||||||
|
dec ebx
|
||||||
|
jz .mount_additional_directory
|
||||||
ret
|
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:
|
.get:
|
||||||
; sysfunction 30.2: [for app] eax=30,ebx=2,ecx->buffer,edx=len
|
; sysfunction 30.2: [for app] eax=30,ebx=2,ecx->buffer,edx=len
|
||||||
; for our code: ebx->buffer,ecx=len
|
; for our code: ebx->buffer,ecx=len
|
||||||
|
@ -32,6 +32,17 @@ uglobal
|
|||||||
; Parser_params will initialize: sysdir_name = "sys", sysdir_path = <sysdir>
|
; Parser_params will initialize: sysdir_name = "sys", sysdir_path = <sysdir>
|
||||||
sysdir_name rb 64
|
sysdir_name rb 64
|
||||||
sysdir_path 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 ?
|
tmp_file_name_table dd ?
|
||||||
endg
|
endg
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user