73 lines
3.0 KiB
HTML
73 lines
3.0 KiB
HTML
; =============================================================================
|
||
; Clipboard (HGCM service: Shared Clipboard / SHCL)
|
||
; =============================================================================
|
||
struct SHCL_MSG_GET
|
||
header HGCM_CALL
|
||
msg_type HGCM_PARM
|
||
formats HGCM_PARM
|
||
ends
|
||
|
||
struct SHCL_FORMATS_REPORT
|
||
header HGCM_CALL
|
||
formats HGCM_PARM
|
||
ends
|
||
|
||
struct SHCL_DATA_READ
|
||
header HGCM_CALL
|
||
format HGCM_PARM
|
||
buffer HGCM_PARM
|
||
size HGCM_PARM
|
||
ends
|
||
|
||
struct SHCL_DATA_WRITE
|
||
header HGCM_CALL
|
||
format HGCM_PARM
|
||
buffer HGCM_PARM
|
||
ends
|
||
|
||
|
||
|
||
; =============================================================================
|
||
; Clipboard Structures
|
||
;
|
||
; ПРИМЕЧАНИЕ: Старые структуры SHCL_MSG_GET, SHCL_FORMATS_REPORT,
|
||
; SHCL_DATA_READ, SHCL_DATA_WRITE УДАЛЕНЫ — они не нужны.
|
||
;
|
||
; Новый код использует плоский массив HGCM_PARM + hgcm_call32_pagelist,
|
||
; как в guest_props. Структуры с встроенным HGCM_CALL заголовком
|
||
; были нужны только для ручного формирования пакетов через
|
||
; hgcm_send_request, что больше не используется.
|
||
; =============================================================================
|
||
|
||
; struct CLIPBOARD_STATE
|
||
; client_id dd ? ; HGCM client ID
|
||
; connected dd ? ; 0 = not connected, 1 = connected
|
||
; formats_host dd ? ; Форматы доступные на хосте (битовая маска VBOX_SHCL_FMT_*)
|
||
; formats_guest dd ? ; Форматы доступные у гостя
|
||
; listen_state dd ?
|
||
; error_count dd ?
|
||
; ends
|
||
|
||
struct CLIPBOARD_STATE
|
||
client_id dd ? ; HGCM client ID
|
||
connected dd ? ; 0/1
|
||
listen_state dd ? ; IDLE/SUBMITTED
|
||
error_count dd ? ; Счетчик ошибок
|
||
formats_host dd ? ; Форматы от хоста
|
||
formats_guest dd ? ; Наши форматы
|
||
has_data dd ? ; Есть данные для чтения
|
||
data_size dd ? ; Размер данных
|
||
|
||
; Динамически выделяемые буферы
|
||
data_buf_ptr dd ? ; -> clip_data_buf (KernelAlloc 64K)
|
||
listen_pkt_virt dd ? ; -> clip_listen_pkt (KernelAlloc 4096, DMA)
|
||
listen_pkt_phys dd ? ; физ. адрес listen_pkt
|
||
parms_ptr dd ? ; -> clip_parms (KernelAlloc)
|
||
debug_buf_ptr dd ? ; -> clip_debug_buf (KernelAlloc)
|
||
|
||
; Поток слушателя (thread-based listener)
|
||
hgcm_event dd ? ; event handle (из CreateEvent)
|
||
hgcm_event_id dd ? ; event euid (из CreateEvent)
|
||
thread_id dd ? ; thread ID (из CreateThread)
|
||
thread_stop dd ? ; 1 = попросить поток завершиться
|
||
ends |