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 | * Процесс, создавший область, всегда имеет доступ на запись. |