Subversion Repositories Kolibri OS

Rev

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

Rev 6891 Rev 6893
Line 2575... Line 2575...
2575
      * 1 = Текст с блочным выделением
2575
      * 1 = Текст с блочным выделением
2576
      * 2 = Изображение
2576
      * 2 = Изображение
2577
      * 3 = RAW
2577
      * 3 = RAW
2578
      * 4 и выше зарезервировано
2578
      * 4 и выше зарезервировано
2579
    * +8: более детально смотрите файл clipboard_container_rus.txt
2579
    * +8: более детально смотрите файл clipboard_container_rus.txt
2580
  * Функция должна использоваться совместно с 68.11. Приложение должно
-
 
2581
    предварительно проинициализировать локальную кучу вызовом 68.11.
-
 
Line 2582... Line 2580...
2582
 
2580
 
2583
---------------------- Константы для регистров: ----------------------
2581
---------------------- Константы для регистров: ----------------------
2584
  eax - SF_CLIPBOARD (54)
2582
  eax - SF_CLIPBOARD (54)
2585
  ebx - SSF_READ_CB (1)
2583
  ebx - SSF_READ_CB (1)
Line 2989... Line 2987...
2989
Возвращаемое значение:
2987
Возвращаемое значение:
2990
  * eax = 0 - успешно
2988
  * eax = 0 - успешно
2991
  * eax = 1 - недостаточно памяти
2989
  * eax = 1 - недостаточно памяти
2992
Замечания:
2990
Замечания:
2993
  * Есть другой способ выделения/освобождения динамической памяти -
2991
  * Есть другой способ выделения/освобождения динамической памяти -
2994
    подфункции 11, 12, 13 функции 68.
-
 
2995
  * Функция не может использоваться совместно с 68.11, 68.12, 68.13.
2992
    подфункции 12, 13 и 20 функции 68, но после их использования будет
2996
    Вызов функции будет игнорироваться, если приложение создаст
2993
    создана куча процесса и вызов функции 64 будет игнорироваться.
2997
    локальную кучу вызовом 68.11.
-
 
Line 2998... Line 2994...
2998
 
2994
 
2999
---------------------- Константы для регистров: ----------------------
2995
---------------------- Константы для регистров: ----------------------
3000
  eax - SF_MEMORY_RESIZE (64)
2996
  eax - SF_MEMORY_RESIZE (64)
3001
======================================================================
2997
======================================================================
Line 3294... Line 3290...
3294
 
3290
 
3295
---------------------- Константы для регистров: ----------------------
3291
---------------------- Константы для регистров: ----------------------
3296
  eax - SF_SYS_MISC (68)
3292
  eax - SF_SYS_MISC (68)
3297
  ebx - SSF_WRITE_MSR (4)
3293
  ebx - SSF_WRITE_MSR (4)
3298
======================================================================
3294
======================================================================
3299
===== Функция 68, подфункция 11 - инициализировать кучу процесса. ====
3295
= Функция 68, подфункция 11 - вручную инициализировать кучу процесса =
3300
======================================================================
3296
======================================================================
3301
Параметры:
3297
Параметры:
3302
  * eax = 68 - номер функции
3298
  * eax = 68 - номер функции
3303
  * ebx = 11 - номер подфункции
3299
  * ebx = 11 - номер подфункции
3304
Возвращаемое значение:
3300
Возвращаемое значение:
3305
  * eax = 0 - неуспех
3301
  * eax = 0 - неуспех
3306
  * иначе размер созданной кучи
3302
  * иначе размер созданной кучи
3307
Замечания:
3303
Замечания:
3308
  * Вызов функции инициализирует кучу, из которой впоследствии можно
3304
  * Вызов функции инициализирует кучу, из которой впоследствии можно
-
 
3305
    выделять и освобождать блоки памяти подфункциями 12, 13 и 20.
3309
    выделять и освобождать блоки памяти подфункциями 12 и 13.
3306
  * Если куча уже создана, функция вернёт размер существующей кучи.
3310
    Размер кучи равен размеру всей свободной памяти приложения.
-
 
3311
  * При повторном вызове функции тем же процессом функция вернёт
-
 
3312
    размер существующей кучи.
3307
    Размер кучи равен размеру всей свободной памяти приложения.
Line 3313... Line 3308...
3313
  * После создания кучи вызовы функции 64 игнорируются.
3308
  * После создания кучи вызовы функции 64 игнорируются.
3314
 
3309
 
3315
---------------------- Константы для регистров: ----------------------
3310
---------------------- Константы для регистров: ----------------------
Line 3323... Line 3318...
3323
  * ebx = 12 - номер подфункции
3318
  * ebx = 12 - номер подфункции
3324
  * ecx = требуемый размер в байтах
3319
  * ecx = требуемый размер в байтах
3325
Возвращаемое значение:
3320
Возвращаемое значение:
3326
  * eax = указатель на выделенный блок
3321
  * eax = указатель на выделенный блок
3327
Замечания:
3322
Замечания:
3328
  * Предварительно следует инициализировать кучу процесса вызовом
-
 
3329
    подфункции 11.
-
 
3330
  * Функция выделяет целое число страниц (4 Кб) так, что фактический
3323
  * Функция выделяет целое число страниц (4 Кб) так, что фактический
3331
    размер выделенного блока больше или равен запрошенному.
3324
    размер выделенного блока больше или равен запрошенному.
Line 3332... Line 3325...
3332
 
3325
 
3333
---------------------- Константы для регистров: ----------------------
3326
---------------------- Константы для регистров: ----------------------
Line 3452... Line 3445...
3452
  * ecx = новый размер в байтах
3445
  * ecx = новый размер в байтах
3453
  * edx = указатель на уже выделенный блок памяти
3446
  * edx = указатель на уже выделенный блок памяти
3454
Возвращаемое значение:
3447
Возвращаемое значение:
3455
  * eax = указатель на перераспределённый блок, 0 при ошибке
3448
  * eax = указатель на перераспределённый блок, 0 при ошибке
3456
Замечания:
3449
Замечания:
3457
  * Предварительно следует инициализировать кучу процесса вызовом
-
 
3458
    подфункции 11.
-
 
3459
  * Функция выделяет целое число страниц (4 Кб) так, что фактический
3450
  * Функция выделяет целое число страниц (4 Кб) так, что фактический
3460
    размер выделенного блока больше или равен запрошенному.
3451
    размер выделенного блока больше или равен запрошенному.
3461
  * Если edx=0, то вызов функции эквивалентен выделению памяти
3452
  * Если edx=0, то вызов функции эквивалентен выделению памяти
3462
    подфункцией 12. В противном случае блок памяти по адресу edx
3453
    подфункцией 12. В противном случае блок памяти по адресу edx
3463
    должен быть ранее выделен подфункцией 12 или
3454
    должен быть ранее выделен подфункцией 12 или
Line 3517... Line 3508...
3517
  * E_NOTFOUND = 5
3508
  * E_NOTFOUND = 5
3518
  * E_ACCESS = 10
3509
  * E_ACCESS = 10
3519
  * E_NOMEM = 30
3510
  * E_NOMEM = 30
3520
  * E_PARAM = 33
3511
  * E_PARAM = 33
3521
Замечания:
3512
Замечания:
3522
  * Предварительно следует инициализировать кучу процесса вызовом
-
 
3523
    подфункции 11.
-
 
3524
  * Если создаётся новая область, то флаги доступа устанавливают
3513
  * Если создаётся новая область, то флаги доступа устанавливают
3525
    максимальные права доступа для остальных процессов. Попытка
3514
    максимальные права доступа для остальных процессов. Попытка
3526
    открытия другим потоком с неразрешёнными правами провалится
3515
    открытия другим потоком с неразрешёнными правами провалится
3527
    с кодом ошибки E_ACCESS.
3516
    с кодом ошибки E_ACCESS.
3528
  * Процесс, создавший область, всегда имеет доступ на запись.
3517
  * Процесс, создавший область, всегда имеет доступ на запись.