Subversion Repositories Kolibri OS

Rev

Rev 6427 | Rev 6502 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6427 Rev 6473
Line 1698... Line 1698...
1698
 
1698
 
1699
-------- Подфункция 1 - установить текущую папку для потока. ---------
1699
-------- Подфункция 1 - установить текущую папку для потока. ---------
1700
Параметры:
1700
Параметры:
1701
  * eax = 30 - номер функции
1701
  * eax = 30 - номер функции
1702
  * ebx = 1 - номер подфункции
1702
  * ebx = 1 - номер подфункции
-
 
1703
  * ecx = указатель на строку с путём к новой текущей папке,
1703
  * ecx = указатель на ASCIIZ-строку с путём к новой текущей папке
1704
    правила формирования строки указаны в описании функции 70.
1704
Возвращаемое значение:
1705
Возвращаемое значение:
Line 1705... Line 1706...
1705
  * функция не возвращает значения
1706
  * функция не возвращает значения
1706
 
1707
 
Line 1723... Line 1724...
1723
---- Подфункция 3 - установить доп. системную директорию для ядра ----
1724
---- Подфункция 3 - установить доп. системную директорию для ядра ----
1724
Параметры:
1725
Параметры:
1725
  * eax = 30 - номер функции
1726
  * eax = 30 - номер функции
1726
  * ebx = 3 - номер подфункции
1727
  * ebx = 3 - номер подфункции
1727
  * ecx = указатель на блок данных:
1728
  * ecx = указатель на блок данных:
1728
          sysdir_name     rb 64
1729
    для кодировки cp866:
-
 
1730
key     rb  64
1729
          sysdir_path     rb 64
1731
path    rb  64
-
 
1732
    для кодировки UTF-16LE:
-
 
1733
key     rb  64
-
 
1734
        dw  2
-
 
1735
path    rw  31
1730
Пример:
1736
    Пример:
-
 
1737
align 64
1731
dir_name1       db 'KolibriOS',0
1738
key     db  'kolibrios',0   ; ключ должен быть в нижнем регистре
1732
                rb 64-10
1739
align 64
1733
dir_path1       db 'HD0/1',0
1740
path    db  'HD0/1',0
1734
                rb 64-6
-
 
-
 
1741
 
1735
Возвращаемое значение:
1742
Возвращаемое значение:
1736
  * функция не возвращает значения
1743
  * функция не возвращает значения
1737
Замечания:
1744
Замечания:
1738
  * Функция может быть вызвана только 1 раз за 1 сессию работы ОС.
1745
  * Функция может быть вызвана только 1 раз за 1 сессию работы ОС.
-
 
1746
  * Кодировка не влияет на символьный ключ.
-
 
1747
 
-
 
1748
----- Подфункция 4 - получить текущую папку в кодировке UTF-16LE -----
-
 
1749
Параметры:
-
 
1750
  * eax = 30 - номер функции
-
 
1751
  * ebx = 4 - номер подфункции
-
 
1752
  * ecx = указатель на буфер
-
 
1753
  * edx = размер буфера
-
 
1754
Возвращаемое значение:
-
 
1755
  * eax = количество символов в строке (включая завершающий 0)
-
 
1756
Замечания:
-
 
1757
  * Если размера буфера недостаточно для копирования всего имени,
-
 
1758
    копируются только первые (edx-2) байт и в конце ставится
-
 
1759
    завершающий 0.
-
 
1760
  * По умолчанию, текущая папка для потока - "/rd/1".
-
 
1761
  * При создании процесса/потока текущая папка наследуется от
-
 
1762
    родителя.
Line 1739... Line 1763...
1739
 
1763
 
1740
---------------------- Константы для регистров: ----------------------
1764
---------------------- Константы для регистров: ----------------------
1741
  eax - SF_CURRENT_FOLDER (30)
1765
  eax - SF_CURRENT_FOLDER (30)
1742
  ebx - SSF_SET_CF (1), SSF_GET_CF (2), SSF_ADD_SYS_FOLDER (3)
1766
  ebx - SSF_SET_CF (1), SSF_GET_CF (2), SSF_ADD_SYS_FOLDER (3)
Line 3867... Line 3891...
3867
  * +0: dword: номер подфункции
3891
  * +0: dword: номер подфункции
3868
  * +4: dword: смещение в файле
3892
  * +4: dword: смещение в файле
3869
  * +8: dword: старший dword смещения (должен быть 0) или поле флагов
3893
  * +8: dword: старший dword смещения (должен быть 0) или поле флагов
3870
  * +12 = +0xC: dword: размер
3894
  * +12 = +0xC: dword: размер
3871
  * +16 = +0x10: dword: указатель на данные
3895
  * +16 = +0x10: dword: указатель на данные
3872
  * +20 = +0x14: n db: ASCIIZ-строка с именем файла
3896
  * +20 = +0x14: ?: текстовая строка - путь к файлу, заканчивается нулём
3873
    или
3897
    или
3874
  * +20 = +0x14: db 0
3898
  * +20 = +0x14: byte: 0
3875
  * +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
3899
  * +21 = +0x15: dword: указатель на строку
3876
Уточнения - в документации на соответствующую подфункцию.
3900
Для ввода текста в кодировке UTF-16LE нужно расположить в начале строки
3877
Имя файла нечувствительно к регистру букв. Русские буквы должны быть
3901
байт со значением 2, иначе будет использоваться кодировка cp866.
3878
записаны в кодировке cp866 (DOS).
3902
Чувствительность к регистру букв зависит от файловой системы.
3879
Формат имени файла:
3903
Формат строки:
3880
/base/number/dir1/dir2/.../dirn/file,
3904
  /base/number/dir1/dir2/.../dirn/file,
3881
где /base/number идентифицирует устройство, на котором ищется файл:
3905
где base/number идентифицирует устройство, на котором ищется файл:
3882
одно из
-
 
3883
  * /RD/1 = /RAMDISK/1 для доступа к рамдиску
3906
  * RD/1 = рамдиск
3884
  * /FD/1 = /FLOPPYDISK/1 для доступа к первому флоппи-дисководу,
3907
  * FD/1 = первый флоппи-дисковод,
3885
    /FD/2 = /FLOPPYDISK/2 для второго флоппи-дисковода
3908
    FD/2 = второй флоппи-дисковод
3886
  * /HD0/x, /HD1/x, /HD2/x, /HD3/x для доступа соответственно
3909
  * HD0/x, HD1/x, HD2/x, HD3/x = жёсткие диски соответственно на
3887
    к жёстким дискам на IDE0 (Primary Master), IDE1 (Primary Slave),
3910
    IDE0 (Primary Master), IDE1 (Primary Slave),
3888
    IDE2 (Secondary Master), IDE3 (Secondary Slave);
3911
    IDE2 (Secondary Master), IDE3 (Secondary Slave);
3889
    x - номер раздела на выбранном винчестере, изменяется от 1 до 255
3912
    x - номер раздела на выбранном винчестере, начиная с 1
3890
    (на каждом из винчестеров нумерация начинается с 1)
-
 
3891
  * /CD0/1, /CD1/1, /CD2/1, /CD3/1 для доступа соответственно
3913
  * CD0/1, CD1/1, CD2/1, CD3/1 = аналогично для cd
3892
    к CD на IDE0 (Primary Master), IDE1 (Primary Slave),
-
 
3893
    IDE2 (Secondary Master), IDE3 (Secondary Slave)
-
 
3894
  * /SYS - определяет системную папку; при обычной загрузке системы
3914
  * SYS - системная папка (является ключём, не зависит от кодировки),
3895
    с дискеты эквивалентно /RD/1
3915
    второй ключ может быть установлен сисфункцией 30.3.
3896
Примеры:
3916
Примеры:
3897
  * '/rd/1/kernel.asm',0
3917
  * '/sys/example.asm',0
3898
  * '/HD0/1/kernel.asm',0
3918
  * '/rd/1/example.asm',0
3899
  * '/hd0/2/menuet/pics/tanzania.bmp',0
3919
  * '/HD0/1/folder/file.txt',0
3900
  * '/hd0/1/Program files/NameOfProgram/SomeFile.SomeExtension',0
3920
  * '/hd2/2/pics/tanzania.bmp',0
3901
  * '/sys/MySuperApp.ini',0
3921
  * 2,'/',0,'sys','/',0,'F',0,'I',0,'L',0,'E',0,0,0
3902
Также функция поддерживает относительные имена. Если путь начинается
3922
Также функция поддерживает относительные имена. Если путь начинается
3903
не с '/', то он считается относительно текущей папки. Получить или
3923
не с '/', то он считается относительно текущей папки. Получить или
3904
установить текущую папку можно с помощью сисфункции 30.
3924
установить текущую папку можно с помощью сисфункции 30.
Line 3905... Line 3925...
3905
 
3925
 
Line 3939... Line 3959...
3939
  * +0: dword: 0 = номер подфункции
3959
  * +0: dword: 0 = номер подфункции
3940
  * +4: dword: позиция в файле (в байтах)
3960
  * +4: dword: позиция в файле (в байтах)
3941
  * +8: dword: 0 (зарезервировано под старший dword позиции)
3961
  * +8: dword: 0 (зарезервировано под старший dword позиции)
3942
  * +12 = +0xC: dword: сколько байт читать
3962
  * +12 = +0xC: dword: сколько байт читать
3943
  * +16 = +0x10: dword: указатель на буфер, куда будут записаны данные
3963
  * +16 = +0x10: dword: указатель на буфер, куда будут записаны данные
3944
  * +20 = +0x14: ASCIIZ-имя файла, правила формирования имён указаны в
3964
  * +20 = +0x14: путь, правила формирования имён указаны в общем описании
3945
    общем описании
-
 
3946
    или
-
 
3947
  * +20 = +0x14: db 0
-
 
3948
  * +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
-
 
3949
Возвращаемое значение:
3965
Возвращаемое значение:
3950
  * eax = 0 - успешно, иначе код ошибки файловой системы
3966
  * eax = 0 - успешно, иначе код ошибки файловой системы
3951
  * ebx = число прочитанных байт или
3967
  * ebx = число прочитанных байт или
3952
    -1=0xffffffff, если файл не найден
3968
    -1=0xffffffff, если файл не найден
3953
Замечания:
3969
Замечания:
Line 3967... Line 3983...
3967
  * eax = 70 - номер функции
3983
  * eax = 70 - номер функции
3968
  * ebx = указатель на информационную структуру
3984
  * ebx = указатель на информационную структуру
3969
Формат информационной структуры:
3985
Формат информационной структуры:
3970
  * +0: dword: 1 = номер подфункции
3986
  * +0: dword: 1 = номер подфункции
3971
  * +4: dword: индекс начального блока (считая с 0)
3987
  * +4: dword: индекс начального блока (считая с 0)
3972
  * +8: dword: поле флагов:
-
 
3973
    * бит 0 (маска 1): в каком формате возвращать имена,
3988
  * +8: dword: в какой кодировке возвращать имена:
3974
      0=ANSI, 1=UNICODE
3989
    0 = cp866 -> байт на символ
3975
    * прочие биты зарезервированы и должны быть установлены в 0
-
 
3976
      для будущей совместимости
3990
    1 = UTF-16LE -> 2 байта на символ
3977
  * +12 = +0xC: dword: сколько блоков читать
3991
  * +12 = +0xC: dword: сколько блоков читать
3978
  * +16 = +0x10: dword: указатель на буфер, куда будут записаны
3992
  * +16 = +0x10: dword: указатель на буфер, куда будут записаны
3979
    данные, размер буфера должен быть не меньше 32 + [+12]*560 байт
3993
    данные, размер буфера должен быть не меньше 32+n(40+256*enc+8) байт
3980
  * +20 = +0x14: ASCIIZ-имя папки, правила формирования имён указаны в
3994
  * +20 = +0x14: путь, правила формирования имён указаны в общем описании
3981
    общем описании
-
 
3982
    или
-
 
3983
  * +20 = +0x14: db 0
-
 
3984
  * +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
-
 
3985
Возвращаемое значение:
3995
Возвращаемое значение:
3986
  * eax = 0 - успешно, иначе код ошибки файловой системы
3996
  * eax = 0 - успешно, иначе код ошибки файловой системы
3987
  * ebx = число файлов, информация о которых была записана в буфер,
3997
  * ebx = число файлов, информация о которых была записана в буфер,
3988
    или -1=0xffffffff, если папка не найдена
3998
    или -1=0xffffffff, если папка не найдена
3989
Структура буфера:
3999
Структура буфера:
3990
  * +0: 32*byte: заголовок
4000
  * заголовок (32 байта)
3991
  * +32 = +0x20: n1*byte: блок с информацией о файле 1
4001
  * блок с информацией о файле 1
3992
  * +32+n1: n2*byte: блок с информацией о файле 2
4002
  * блок с информацией о файле 2
3993
  * ...
4003
  * ...
3994
Структура заголовка:
4004
Структура заголовка:
3995
  * +0: dword: версия структуры (текущая версия = 1)
4005
  * +0: dword: версия структуры (текущая версия = 1)
3996
  * +4: dword: количество размещённых блоков; не больше, чем запрошено
4006
  * +4: dword: количество размещённых блоков; не больше, чем запрошено
3997
    в поле +12 информационной структуры; может быть меньше,
4007
    в поле +12 информационной структуры; может быть меньше,
Line 4011... Line 4021...
4011
      архивации имеют опцию, по которой архивируются только файлы
4021
      архивации имеют опцию, по которой архивируются только файлы
4012
      с установленным этим битом, после чего этот бит сбрасывается -
4022
      с установленным этим битом, после чего этот бит сбрасывается -
4013
      это может быть полезно для автоматического создания
4023
      это может быть полезно для автоматического создания
4014
      backup-архивов, ибо при записи бит обычно устанавливается
4024
      backup-архивов, ибо при записи бит обычно устанавливается
4015
      (не в Kolibri, правда)
4025
      (не в Kolibri, правда)
4016
  * +4: byte: тип данных имени:
4026
  * +4: dword: кодировка имени:
4017
    (совпадает с битом 0 флагов информационной структуры)
-
 
4018
    * 0 = ASCII = 1-байтное представление каждого символа
4027
    * 0 = cp866 -> байт на символ
4019
    * 1 = UNICODE = 2-байтное представление каждого символа
4028
    * 1 = UTF-16LE -> 2 байта на символ
4020
  * +5: 3*byte: зарезервировано (нули)
-
 
4021
  * +8: 4*byte: время создания файла
4029
  * +8: 4*byte: время создания файла
4022
  * +12 = +0xC: 4*byte: дата создания файла
4030
  * +12 = +0xC: 4*byte: дата создания файла
4023
  * +16 = +0x10: 4*byte: время последнего доступа (чтение или запись)
4031
  * +16 = +0x10: 4*byte: время последнего доступа (чтение или запись)
4024
  * +20 = +0x14: 4*byte: дата последнего доступа
4032
  * +20 = +0x14: 4*byte: дата последнего доступа
4025
  * +24 = +0x18: 4*byte: время последней модификации
4033
  * +24 = +0x18: 4*byte: время последней модификации
4026
  * +28 = +0x1C: 4*byte: дата последней модификации
4034
  * +28 = +0x1C: 4*byte: дата последней модификации
4027
  * +32 = +0x20: qword: размер файла в байтах (до 16777216 Тб)
4035
  * +32 = +0x20: qword: размер файла в байтах (до 16777216 Тб)
4028
  * +40 = +0x28: имя
4036
  * +40 = +0x28: (256*enc+8)*byte: имя
4029
    * для формата ASCII: максимальная длина имени 263 символа
-
 
4030
      (263 байта), байт после имени имеет значение 0
-
 
4031
    * для формата UNICODE: максимальная длина имени 259 символов
-
 
4032
      (518 байт), два байта после имени имеют значение 0
-
 
4033
Формат времени:
4037
Формат времени:
4034
  * +0: byte: секунды
4038
  * +0: byte: секунды
4035
  * +1: byte: минуты
4039
  * +1: byte: минуты
4036
  * +2: byte: часы
4040
  * +2: byte: часы
4037
  * +3: byte: зарезервировано (0)
4041
  * +3: byte: зарезервировано (0)
Line 4040... Line 4044...
4040
  * +0: byte: день
4044
  * +0: byte: день
4041
  * +1: byte: месяц
4045
  * +1: byte: месяц
4042
  * +2: word: год
4046
  * +2: word: год
4043
  * например, 25.11.1979 записывается как (в hex) 19 0B BB 07
4047
  * например, 25.11.1979 записывается как (в hex) 19 0B BB 07
4044
Замечания:
4048
Замечания:
4045
  * Если в БДВК присутствует имя в ASCII, то длина БДВК составляет
4049
  * Если в БДВК присутствует имя в cp866, то длина БДВК составляет
4046
    304 байта, если в UNICODE - 560 байт. Значение длины выравнено
4050
    304 байта, если в UTF-16LE - 560 байт. Значение длины выравнено
4047
    на целое кратное 16 байт
-
 
4048
    (для ускорения обработки в кэш-памяти CPU).
4051
    на целое кратное 16 байт для ускорения обработки в кэш-памяти CPU.
4049
  * Первый символ после имени нулевой (ASCIIZ-строка). Дальнейшие
4052
  * Строка имени заканчивается нулём, дальнейшие данные содержат мусор.
4050
    данные содержат мусор.
-
 
4051
  * Если файлы в папке кончились раньше, чем было прочитано
4053
  * Если файлы в папке кончились раньше, чем было прочитано
4052
    запрошенное количество, то функция прочитает, сколько сможет,
4054
    запрошенное количество, то функция прочитает, сколько сможет,
4053
    после чего вернёт eax=6 (EOF).
4055
    после чего вернёт eax=6 (EOF).
4054
  * Любая папка на диске, кроме корневой, содержит два специальных
4056
  * Любая папка на диске, кроме корневой, содержит два специальных
4055
    входа "." и "..", идентифицирующих соответственно саму папку и
4057
    входа "." и "..", идентифицирующих соответственно саму папку и
4056
    родительскую папку.
4058
    родительскую папку.
4057
  * Функция позволяет также читать виртуальные папки "/", "/rd",
4059
  * Функция позволяет также читать виртуальные папки "/", "/rd",
4058
    "/fd", "/hd[n]", при этом атрибуты подпапок полагаются равными
4060
    "/fd", "/hd[n]", при этом атрибуты подпапок полагаются равными
4059
    0x10, а времена и даты обнулены. Альтернативный способ получения
4061
    0x10, а времена и даты обнулены.
4060
    информации об оборудовании - подфункция 11 функции 18.
-
 
Line 4061... Line 4062...
4061
 
4062
 
4062
---------------------- Константы для регистров: ----------------------
4063
---------------------- Константы для регистров: ----------------------
4063
  eax - SF_FILE (70)
4064
  eax - SF_FILE (70)
4064
 [ebx] - SSF_READ_FOLDER (1)
4065
 [ebx] - SSF_READ_FOLDER (1)
Line 4073... Line 4074...
4073
  * +0: dword: 2 = номер подфункции
4074
  * +0: dword: 2 = номер подфункции
4074
  * +4: dword: 0 (зарезервировано)
4075
  * +4: dword: 0 (зарезервировано)
4075
  * +8: dword: 0 (зарезервировано)
4076
  * +8: dword: 0 (зарезервировано)
4076
  * +12 = +0xC: dword: сколько байт писать
4077
  * +12 = +0xC: dword: сколько байт писать
4077
  * +16 = +0x10: dword: указатель на данные
4078
  * +16 = +0x10: dword: указатель на данные
4078
  * +20 = +0x14: ASCIIZ-имя файла, правила формирования имён указаны в
4079
  * +20 = +0x14: путь, правила формирования имён указаны в общем описании
4079
    общем описании
-
 
4080
    или
-
 
4081
  * +20 = +0x14: db 0
-
 
4082
  * +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
-
 
4083
Возвращаемое значение:
4080
Возвращаемое значение:
4084
  * eax = 0 - успешно, иначе код ошибки файловой системы
4081
  * eax = 0 - успешно, иначе код ошибки файловой системы
4085
  * ebx = число записанных байт (возможно, 0)
4082
  * ebx = число записанных байт (возможно, 0)
4086
Замечания:
4083
Замечания:
4087
  * Если файл с таким именем не существовал, он создаётся; если
4084
  * Если файл с таким именем не существовал, он создаётся; если
Line 4104... Line 4101...
4104
  * +0: dword: 3 = номер подфункции
4101
  * +0: dword: 3 = номер подфункции
4105
  * +4: dword: позиция в файле (в байтах)
4102
  * +4: dword: позиция в файле (в байтах)
4106
  * +8: dword: старший dword позиции (должен быть 0 для FAT)
4103
  * +8: dword: старший dword позиции (должен быть 0 для FAT)
4107
  * +12 = +0xC: dword: сколько байт писать
4104
  * +12 = +0xC: dword: сколько байт писать
4108
  * +16 = +0x10: dword: указатель на данные
4105
  * +16 = +0x10: dword: указатель на данные
4109
  * +20 = +0x14: ASCIIZ-имя файла, правила формирования имён указаны в
4106
  * +20 = +0x14: путь, правила формирования имён указаны в общем описании
4110
    общем описании
-
 
4111
    или
-
 
4112
  * +20 = +0x14: db 0
-
 
4113
  * +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
-
 
4114
Возвращаемое значение:
4107
Возвращаемое значение:
4115
  * eax = 0 - успешно, иначе код ошибки файловой системы
4108
  * eax = 0 - успешно, иначе код ошибки файловой системы
4116
  * ebx = число записанных байт (возможно, 0)
4109
  * ebx = число записанных байт (возможно, 0)
4117
Замечания:
4110
Замечания:
4118
  * Файл должен уже существовать, иначе вернётся eax=5.
4111
  * Файл должен уже существовать, иначе вернётся eax=5.
Line 4137... Line 4130...
4137
  * +4: dword: младший dword нового размера файла
4130
  * +4: dword: младший dword нового размера файла
4138
  * +8: dword: старший dword нового размера файла
4131
  * +8: dword: старший dword нового размера файла
4139
                   (должен быть 0 для FAT)
4132
                   (должен быть 0 для FAT)
4140
  * +12 = +0xC: dword: 0 (зарезервировано)
4133
  * +12 = +0xC: dword: 0 (зарезервировано)
4141
  * +16 = +0x10: dword: 0 (зарезервировано)
4134
  * +16 = +0x10: dword: 0 (зарезервировано)
4142
  * +20 = +0x14: ASCIIZ-имя файла, правила формирования имён указаны в
4135
  * +20 = +0x14: путь, правила формирования имён указаны в общем описании
4143
    общем описании
-
 
4144
    или
-
 
4145
  * +20 = +0x14: db 0
-
 
4146
  * +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
-
 
4147
Возвращаемое значение:
4136
Возвращаемое значение:
4148
  * eax = 0 - успешно, иначе код ошибки файловой системы
4137
  * eax = 0 - успешно, иначе код ошибки файловой системы
4149
  * ebx разрушается
4138
  * ebx разрушается
4150
Замечания:
4139
Замечания:
4151
  * Если новый размер файла меньше старого, файл усекается. Если
4140
  * Если новый размер файла меньше старого, файл усекается. Если
Line 4171... Line 4160...
4171
  * +4: dword: 0 (зарезервировано)
4160
  * +4: dword: 0 (зарезервировано)
4172
  * +8: dword: 0 или флаги (для корневого каталога)
4161
  * +8: dword: 0 или флаги (для корневого каталога)
4173
  * +12 = +0xC: dword: 0 (зарезервировано)
4162
  * +12 = +0xC: dword: 0 (зарезервировано)
4174
  * +16 = +0x10: dword: указатель на буфер, куда будут записаны данные
4163
  * +16 = +0x10: dword: указатель на буфер, куда будут записаны данные
4175
                        (40 байт)
4164
                        (40 байт)
4176
  * +20 = +0x14: ASCIIZ-имя файла, правила формирования имён указаны в
4165
  * +20 = +0x14: путь, правила формирования имён указаны в общем описании
4177
    общем описании
-
 
4178
    или
-
 
4179
  * +20 = +0x14: db 0
-
 
4180
  * +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
-
 
4181
Возвращаемое значение:
4166
Возвращаемое значение:
4182
  * eax = 0 - успешно, иначе код ошибки файловой системы
4167
  * eax = 0 - успешно, иначе код ошибки файловой системы
4183
  * ebx разрушается
4168
  * ebx разрушается
4184
Информация о файле возвращается в формате БДВК
4169
Информация о файле возвращается в формате БДВК
4185
(блока данных входа каталога), указанном в описании подфункции 1,
4170
(блока данных входа каталога), указанном в описании подфункции 1,
Line 4201... Line 4186...
4201
  * +0: dword: 6 = номер подфункции
4186
  * +0: dword: 6 = номер подфункции
4202
  * +4: dword: 0 (зарезервировано)
4187
  * +4: dword: 0 (зарезервировано)
4203
  * +8: dword: 0 (зарезервировано)
4188
  * +8: dword: 0 (зарезервировано)
4204
  * +12 = +0xC: dword: 0 (зарезервировано)
4189
  * +12 = +0xC: dword: 0 (зарезервировано)
4205
  * +16 = +0x10: dword: указатель на буфер с атрибутами (32 байта)
4190
  * +16 = +0x10: dword: указатель на буфер с атрибутами (32 байта)
4206
  * +20 = +0x14: ASCIIZ-имя файла, правила формирования имён указаны в
4191
  * +20 = +0x14: путь, правила формирования имён указаны в общем описании
4207
    общем описании
-
 
4208
    или
-
 
4209
  * +20 = +0x14: db 0
-
 
4210
  * +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
-
 
4211
Возвращаемое значение:
4192
Возвращаемое значение:
4212
  * eax = 0 - успешно, иначе код ошибки файловой системы
4193
  * eax = 0 - успешно, иначе код ошибки файловой системы
4213
  * ebx разрушается
4194
  * ebx разрушается
4214
Атрибуты файла - первые 32 байта в БДВК (блоке данных входа каталога),
4195
Атрибуты файла - первые 32 байта в БДВК (блоке данных входа каталога),
4215
формат которого указан в описании подфункции 1
4196
формат которого указан в описании подфункции 1
Line 4236... Line 4217...
4236
    * бит 0: запустить процесс как отлаживаемый
4217
    * бит 0: запустить процесс как отлаживаемый
4237
    * остальные биты зарезервированы и должны быть установлены в 0
4218
    * остальные биты зарезервированы и должны быть установлены в 0
4238
  * +8: dword: 0 или указатель на ASCIIZ-строку с параметрами
4219
  * +8: dword: 0 или указатель на ASCIIZ-строку с параметрами
4239
  * +12 = +0xC: dword: 0 (зарезервировано)
4220
  * +12 = +0xC: dword: 0 (зарезервировано)
4240
  * +16 = +0x10: dword: 0 (зарезервировано)
4221
  * +16 = +0x10: dword: 0 (зарезервировано)
4241
  * +20 = +0x14: ASCIIZ-имя файла, правила формирования имён указаны в
4222
  * +20 = +0x14: путь, правила формирования имён указаны в общем описании
4242
    общем описании
-
 
4243
    или
-
 
4244
  * +20 = +0x14: db 0
-
 
4245
  * +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
-
 
4246
Возвращаемое значение:
4223
Возвращаемое значение:
4247
  * eax > 0 - программа загружена, eax содержит PID
4224
  * eax > 0 - программа загружена, eax содержит PID
4248
  * eax < 0 - произошла ошибка, -eax содержит
4225
  * eax < 0 - произошла ошибка, -eax содержит
4249
    код ошибки файловой системы
4226
    код ошибки файловой системы
4250
  * ebx разрушается
4227
  * ebx разрушается
Line 4270... Line 4247...
4270
  * +0: dword: 8 = номер подфункции
4247
  * +0: dword: 8 = номер подфункции
4271
  * +4: dword: 0 (зарезервировано)
4248
  * +4: dword: 0 (зарезервировано)
4272
  * +8: dword: 0 (зарезервировано)
4249
  * +8: dword: 0 (зарезервировано)
4273
  * +12 = +0xC: dword: 0 (зарезервировано)
4250
  * +12 = +0xC: dword: 0 (зарезервировано)
4274
  * +16 = +0x10: dword: 0 (зарезервировано)
4251
  * +16 = +0x10: dword: 0 (зарезервировано)
4275
  * +20 = +0x14: ASCIIZ-имя файла, правила формирования имён указаны в
4252
  * +20 = +0x14: путь, правила формирования имён указаны в общем описании
4276
    общем описании
-
 
4277
    или
-
 
4278
  * +20 = +0x14: db 0
-
 
4279
  * +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
-
 
4280
Возвращаемое значение:
4253
Возвращаемое значение:
4281
  * eax = 0 - успешно, иначе код ошибки файловой системы
4254
  * eax = 0 - успешно, иначе код ошибки файловой системы
4282
  * ebx разрушается
4255
  * ebx разрушается
4283
Замечания:
4256
Замечания:
4284
  * Функция не поддерживается для CD (вернётся код ошибки 2).
4257
  * Функция не поддерживается для CD (вернётся код ошибки 2).
Line 4298... Line 4271...
4298
  * +0: dword: 9 = номер подфункции
4271
  * +0: dword: 9 = номер подфункции
4299
  * +4: dword: 0 (зарезервировано)
4272
  * +4: dword: 0 (зарезервировано)
4300
  * +8: dword: 0 (зарезервировано)
4273
  * +8: dword: 0 (зарезервировано)
4301
  * +12 = +0xC: dword: 0 (зарезервировано)
4274
  * +12 = +0xC: dword: 0 (зарезервировано)
4302
  * +16 = +0x10: dword: 0 (зарезервировано)
4275
  * +16 = +0x10: dword: 0 (зарезервировано)
4303
  * +20 = +0x14: ASCIIZ-имя папки, правила формирования имён указаны в
4276
  * +20 = +0x14: путь, правила формирования имён указаны в общем описании
4304
    общем описании
-
 
4305
    или
-
 
4306
  * +20 = +0x14: db 0
-
 
4307
  * +21 = +0x15: dd указатель на ASCIIZ-строку с именем папки
-
 
4308
Возвращаемое значение:
4277
Возвращаемое значение:
4309
  * eax = 0 - успешно, иначе код ошибки файловой системы
4278
  * eax = 0 - успешно, иначе код ошибки файловой системы
4310
  * ebx разрушается
4279
  * ebx разрушается
4311
Замечания:
4280
Замечания:
4312
  * Функция не поддерживается для CD (вернётся код ошибки 2).
4281
  * Функция не поддерживается для CD (вернётся код ошибки 2).