SysFn54/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
No edit summary
 
(9 intermediate revisions by 5 users not shown)
Line 1: Line 1:
'''Функция 54 - работа с буфером обмена'''
'''Функция 54''' - работа с буфером обмена
=== Функция 54, подфункция 0 - узнать количество слотов в буфере обмена. ===
=== Подфункция 0 - узнать количество слотов в буфере обмена. ===
Параметры:
Параметры:
* eax = 54 - номер функции
:* eax = 54 - номер функции
* ebx = 0 - номер подфункции
:* ebx = 0 - номер подфункции
Возвращаемое значение:
Возвращаемое значение:
* eax = количество слотов в буфере  
:* eax = количество слотов в буфере  
* eax = -1 - отсутствует область главного списка
:* eax = -1 - отсутствует область главного списка
 
'''Константы для регистров:'''
::eax - SF_CLIPBOARD (54)
::ebx - SSF_GET_SLOT_COUNT (0)


=== Подфункция 1 - считать данные из буфера обмена. ===
=== Подфункция 1 - считать данные из буфера обмена. ===
Параметры:
Параметры:
* eax = 54 - номер функции
:* eax = 54 - номер функции
* ebx = 1 - номер подфункции
:* ebx = 1 - номер подфункции
* eсx = номер слота
:* eсx = номер слота
Возвращаемое значение:
Возвращаемое значение:
* eax = если успешно - указатель на область памяти с данными
:* eax = если успешно - указатель на область памяти с данными
* eax = 1 - ошибка
:* eax = 1 - ошибка
* eax = -1 - отсутствует область главного списка
:* eax = -1 - отсутствует область главного списка
Замечания:
:* буфер, на который указывает eax, содержит следующую информацию:
::* +0: dword: общая длина данных
::* +4: dword: определяет тип данныx:
:::* 0 = Текст
:::* 1 = Изображение
:::* 2 = RAW
:::* 3 и выше зарезервировано
::* +8: более детально смотрите файл clipboard_container_rus.txt
:* Функция должна использоваться совместно с [[SysFn68/ru|68.]]11. Приложение должно
:: предварительно проинициализировать локальную кучу вызовом [[SysFn68/ru|68.]]11.
 
'''Константы для регистров:'''
::eax - SF_CLIPBOARD (54)
::ebx - SSF_READ_CB (1)
 
=== Подфункция 2 - записать данные в буфер обмена. ===
=== Подфункция 2 - записать данные в буфер обмена. ===
Параметры:
Параметры:
* eax = 54 - номер функции
:* eax = 54 - номер функции
* ebx = 2 - номер подфункции
:* ebx = 2 - номер подфункции
* eсx = количество копируемых байт
:* eсx = количество копируемых байт
* edx = указатель на буфер под копируемые данные
:* edx = указатель на буфер под копируемые данные
Возвращаемое значение:
Возвращаемое значение:
* eax = 0 - успешно
:* eax = 0 - успешно
* eax = 1 - ошибка
:* eax = 1 - ошибка
* eax = -1 - отсутствует область главного списка
:* eax = -1 - отсутствует область главного списка
 
'''Константы для регистров:'''
::eax - SF_CLIPBOARD (54)
::ebx - SSF_WRITE_CB (2)


=== Подфункция 3 - удалить последний слот с данными в буфере обмена ===
=== Подфункция 3 - удалить последний слот с данными в буфере обмена ===
Параметры:
Параметры:
* eax = 54 - номер функции
:* eax = 54 - номер функции
* ebx = 3 - номер подфункции
:* ebx = 3 - номер подфункции
Возвращаемое значение:
Возвращаемое значение:
* eax = 0 - успешно
:* eax = 0 - успешно
* eax = 1 - ошибка
:* eax = 1 - ошибка
* eax = -1 - отсутствует область главного списка
:* eax = -1 - отсутствует область главного списка
 
'''Константы для регистров:'''
::eax - SF_CLIPBOARD (54)
::ebx - SSF_DEL_SLOT (3)


=== Подфункция 4 - аварийный сброс блокировки буфера ===
=== Подфункция 4 - аварийный сброс блокировки буфера ===
Параметры:
Параметры:
* eax = 54 - номер функции
:* eax = 54 - номер функции
* ebx = 4 - номер подфункции
:* ebx = 4 - номер подфункции
Возвращаемое значение:
Возвращаемое значение:
* eax = 0 - успешно
:* eax = 0 - успешно
* eax = -1 - отсутствует область главного списка или нет блокировки
:* eax = -1 - отсутствует область главного списка или нет блокировки
Замечания:
Замечания:
* Используется в исключительных случаях, когда зависшее или убитое приложение заблокировало работу с буфером обмена.
:* Используется в исключительных случаях, когда зависшее или убитое приложение заблокировало работу с буфером обмена.
 
'''Константы для регистров:'''
::eax - SF_CLIPBOARD (54)
::ebx - SSF_UNLOCK_BUFFER (4)
 
=== Содержимое контейнера буфера обмена ===
 
1. Первый dword содержит общую длину данных в контейнере
 
2. Второй dword указывает тип данныx:
:0 = Текст
:1 = Изображение
:2 = RAW
:3 = путь для файлового менеджера Eolite
:4 и выше зарезервировано
 
2.1 Текст
::Данные в третьем dword содержат тип:
::0 = UTF
::1 = 0866::
::2 = 1251
::3 и выше зарезервировано
 
2.2 Изображение
::Третий dword - размер по X
::Четвертый dword - размер по Y
::Пятый dword - глубина цвета в битах (8, 16, 24, 32, 48, 64)
::Шестой dword - Указатель на палитру (смещение от начала файла).
:::::::Если палитры нет то значение 0
::Седьмой dword - Размер области палитры, максимальное значение 256*4=1024байт.
:::::::Если палитры нет то значение 0
::Восьмой dword - Указатель на данные пикселей для R, G, B.
::Девятый dword - Размер области данных для пикселей.
::
2.3 RAW
::Может содержать любые данные, т.к. содержимое на усмотрение программиста
2.4 Путь для файлового менеджера
:: В отличии от остальных данных, для файлового менеджера используется word содержащий константу 0x0001, после этого значения находится путь к копируемой директории или файлу
{{System_functions}}
[[Category: SysCalls]]

Latest revision as of 10:00, 14 June 2024

Функция 54 - работа с буфером обмена

Подфункция 0 - узнать количество слотов в буфере обмена.

Параметры:

  • eax = 54 - номер функции
  • ebx = 0 - номер подфункции

Возвращаемое значение:

  • eax = количество слотов в буфере
  • eax = -1 - отсутствует область главного списка

Константы для регистров:

eax - SF_CLIPBOARD (54)
ebx - SSF_GET_SLOT_COUNT (0)

Подфункция 1 - считать данные из буфера обмена.

Параметры:

  • eax = 54 - номер функции
  • ebx = 1 - номер подфункции
  • eсx = номер слота

Возвращаемое значение:

  • eax = если успешно - указатель на область памяти с данными
  • eax = 1 - ошибка
  • eax = -1 - отсутствует область главного списка

Замечания:

  • буфер, на который указывает eax, содержит следующую информацию:
  • +0: dword: общая длина данных
  • +4: dword: определяет тип данныx:
  • 0 = Текст
  • 1 = Изображение
  • 2 = RAW
  • 3 и выше зарезервировано
  • +8: более детально смотрите файл clipboard_container_rus.txt
  • Функция должна использоваться совместно с 68.11. Приложение должно
предварительно проинициализировать локальную кучу вызовом 68.11.

Константы для регистров:

eax - SF_CLIPBOARD (54)
ebx - SSF_READ_CB (1)

Подфункция 2 - записать данные в буфер обмена.

Параметры:

  • eax = 54 - номер функции
  • ebx = 2 - номер подфункции
  • eсx = количество копируемых байт
  • edx = указатель на буфер под копируемые данные

Возвращаемое значение:

  • eax = 0 - успешно
  • eax = 1 - ошибка
  • eax = -1 - отсутствует область главного списка

Константы для регистров:

eax - SF_CLIPBOARD (54)
ebx - SSF_WRITE_CB (2)

Подфункция 3 - удалить последний слот с данными в буфере обмена

Параметры:

  • eax = 54 - номер функции
  • ebx = 3 - номер подфункции

Возвращаемое значение:

  • eax = 0 - успешно
  • eax = 1 - ошибка
  • eax = -1 - отсутствует область главного списка

Константы для регистров:

eax - SF_CLIPBOARD (54)
ebx - SSF_DEL_SLOT (3)

Подфункция 4 - аварийный сброс блокировки буфера

Параметры:

  • eax = 54 - номер функции
  • ebx = 4 - номер подфункции

Возвращаемое значение:

  • eax = 0 - успешно
  • eax = -1 - отсутствует область главного списка или нет блокировки

Замечания:

  • Используется в исключительных случаях, когда зависшее или убитое приложение заблокировало работу с буфером обмена.

Константы для регистров:

eax - SF_CLIPBOARD (54)
ebx - SSF_UNLOCK_BUFFER (4)

Содержимое контейнера буфера обмена

1. Первый dword содержит общую длину данных в контейнере

2. Второй dword указывает тип данныx:

0 = Текст
1 = Изображение
2 = RAW
3 = путь для файлового менеджера Eolite
4 и выше зарезервировано

2.1 Текст

Данные в третьем dword содержат тип:
0 = UTF
1 = 0866::
2 = 1251
3 и выше зарезервировано

2.2 Изображение

Третий dword - размер по X
Четвертый dword - размер по Y
Пятый dword - глубина цвета в битах (8, 16, 24, 32, 48, 64)
Шестой dword - Указатель на палитру (смещение от начала файла).
Если палитры нет то значение 0
Седьмой dword - Размер области палитры, максимальное значение 256*4=1024байт.
Если палитры нет то значение 0
Восьмой dword - Указатель на данные пикселей для R, G, B.
Девятый dword - Размер области данных для пикселей.

2.3 RAW

Может содержать любые данные, т.к. содержимое на усмотрение программиста

2.4 Путь для файлового менеджера

В отличии от остальных данных, для файлового менеджера используется word содержащий константу 0x0001, после этого значения находится путь к копируемой директории или файлу