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). |