Blame server/Windows/wf_mirage.h

Packit 1fb8d4
/**
Packit 1fb8d4
 * FreeRDP: A Remote Desktop Protocol Implementation
Packit 1fb8d4
 * FreeRDP Windows Server
Packit 1fb8d4
 *
Packit 1fb8d4
 * Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
Packit 1fb8d4
 * Copyright 2012-2013 Corey Clayton <can.of.tuna@gmail.com>
Packit 1fb8d4
 *
Packit 1fb8d4
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit 1fb8d4
 * you may not use this file except in compliance with the License.
Packit 1fb8d4
 * You may obtain a copy of the License at
Packit 1fb8d4
 *
Packit 1fb8d4
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit 1fb8d4
 *
Packit 1fb8d4
 * Unless required by applicable law or agreed to in writing, software
Packit 1fb8d4
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit 1fb8d4
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 1fb8d4
 * See the License for the specific language governing permissions and
Packit 1fb8d4
 * limitations under the License.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#ifndef FREERDP_SERVER_WIN_MIRAGE_H
Packit 1fb8d4
#define FREERDP_SERVER_WIN_MIRAGE_H
Packit 1fb8d4
Packit 1fb8d4
#include "wf_interface.h"
Packit 1fb8d4
Packit 1fb8d4
enum
Packit 1fb8d4
{
Packit 1fb8d4
	MIRROR_LOAD = 0,
Packit 1fb8d4
	MIRROR_UNLOAD = 1
Packit 1fb8d4
};
Packit 1fb8d4
Packit 1fb8d4
enum
Packit 1fb8d4
{
Packit 1fb8d4
	DMF_ESCAPE_BASE_1_VB = 1030,
Packit Service 5a9772
	DMF_ESCAPE_BASE_2_VB = 1026,
Packit 1fb8d4
	DMF_ESCAPE_BASE_3_VB = 24
Packit 1fb8d4
};
Packit 1fb8d4
Packit Service 5a9772
#ifdef _WIN64
Packit 1fb8d4
Packit Service 5a9772
#define CLIENT_64BIT 0x8000
Packit 1fb8d4
Packit 1fb8d4
enum
Packit 1fb8d4
{
Packit 1fb8d4
	DMF_ESCAPE_BASE_1 = CLIENT_64BIT | DMF_ESCAPE_BASE_1_VB,
Packit Service 5a9772
	DMF_ESCAPE_BASE_2 = CLIENT_64BIT | DMF_ESCAPE_BASE_2_VB,
Packit Service 5a9772
	DMF_ESCAPE_BASE_3 = CLIENT_64BIT | DMF_ESCAPE_BASE_3_VB,
Packit 1fb8d4
};
Packit 1fb8d4
Packit 1fb8d4
#else
Packit 1fb8d4
Packit 1fb8d4
enum
Packit 1fb8d4
{
Packit 1fb8d4
	DMF_ESCAPE_BASE_1 = DMF_ESCAPE_BASE_1_VB,
Packit Service 5a9772
	DMF_ESCAPE_BASE_2 = DMF_ESCAPE_BASE_2_VB,
Packit Service 5a9772
	DMF_ESCAPE_BASE_3 = DMF_ESCAPE_BASE_3_VB,
Packit 1fb8d4
};
Packit 1fb8d4
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
typedef enum
Packit 1fb8d4
{
Packit 1fb8d4
	dmf_esc_qry_ver_info = DMF_ESCAPE_BASE_2 + 0,
Packit 1fb8d4
	dmf_esc_usm_pipe_map = DMF_ESCAPE_BASE_1 + 0,
Packit 1fb8d4
	dmf_esc_usm_pipe_unmap = DMF_ESCAPE_BASE_1 + 1,
Packit 1fb8d4
	dmf_esc_test = DMF_ESCAPE_BASE_1 + 20,
Packit 1fb8d4
	dmf_esc_usm_pipe_mapping_test = DMF_ESCAPE_BASE_1 + 21,
Packit 1fb8d4
	dmf_esc_pointer_shape_get = DMF_ESCAPE_BASE_3,
Packit 1fb8d4
Packit 1fb8d4
} dmf_escape;
Packit 1fb8d4
Packit Service 5a9772
#define CLIP_LIMIT 50
Packit Service 5a9772
#define MAXCHANGES_BUF 20000
Packit 1fb8d4
Packit 1fb8d4
typedef enum
Packit 1fb8d4
{
Packit 1fb8d4
	dmf_dfo_IGNORE = 0,
Packit 1fb8d4
	dmf_dfo_FROM_SCREEN = 1,
Packit 1fb8d4
	dmf_dfo_FROM_DIB = 2,
Packit 1fb8d4
	dmf_dfo_TO_SCREEN = 3,
Packit 1fb8d4
	dmf_dfo_SCREEN_SCREEN = 11,
Packit 1fb8d4
	dmf_dfo_BLIT = 12,
Packit 1fb8d4
	dmf_dfo_SOLIDFILL = 13,
Packit 1fb8d4
	dmf_dfo_BLEND = 14,
Packit 1fb8d4
	dmf_dfo_TRANS = 15,
Packit 1fb8d4
	dmf_dfo_PLG = 17,
Packit 1fb8d4
	dmf_dfo_TEXTOUT = 18,
Packit 1fb8d4
	dmf_dfo_Ptr_Shape = 19,
Packit 1fb8d4
	dmf_dfo_Ptr_Engage = 48,
Packit 1fb8d4
	dmf_dfo_Ptr_Avert = 49,
Packit 1fb8d4
	dmf_dfn_assert_on = 64,
Packit 1fb8d4
	dmf_dfn_assert_off = 65,
Packit 1fb8d4
} dmf_UpdEvent;
Packit 1fb8d4
Packit Service 5a9772
#define NOCACHE 1
Packit Service 5a9772
#define OLDCACHE 2
Packit Service 5a9772
#define NEWCACHE 3
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	ULONG type;
Packit 1fb8d4
	RECT rect;
Packit 1fb8d4
#ifndef DFMIRAGE_LEAN
Packit 1fb8d4
	RECT origrect;
Packit 1fb8d4
	POINT point;
Packit 1fb8d4
	ULONG color;
Packit 1fb8d4
	ULONG refcolor;
Packit 1fb8d4
#endif
Packit 1fb8d4
} CHANGES_RECORD;
Packit 1fb8d4
Packit 1fb8d4
typedef CHANGES_RECORD* PCHANGES_RECORD;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	ULONG counter;
Packit 1fb8d4
	CHANGES_RECORD pointrect[MAXCHANGES_BUF];
Packit 1fb8d4
} CHANGES_BUF;
Packit 1fb8d4
Packit Service 5a9772
#define EXT_DEVMODE_SIZE_MAX 3072
Packit Service 5a9772
#define DMF_PIPE_SEC_SIZE_DEFAULT ALIGN64K(sizeof(CHANGES_BUF))
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit Service 5a9772
	CHANGES_BUF* buffer;
Packit Service 5a9772
	PVOID Userbuffer;
Packit 1fb8d4
} GETCHANGESBUF;
Packit 1fb8d4
Packit Service 5a9772
#define dmf_sprb_ERRORMASK 0x07FF
Packit Service 5a9772
#define dmf_sprb_STRICTSESSION_AFF 0x1FFF
Packit 1fb8d4
Packit Service 5a9772
typedef enum
Packit 1fb8d4
{
Packit 1fb8d4
	dmf_sprb_internal_error = 0x0001,
Packit 1fb8d4
	dmf_sprb_miniport_gen_error = 0x0004,
Packit 1fb8d4
	dmf_sprb_memory_alloc_failed = 0x0008,
Packit 1fb8d4
	dmf_sprb_pipe_buff_overflow = 0x0010,
Packit 1fb8d4
	dmf_sprb_pipe_buff_insufficient = 0x0020,
Packit 1fb8d4
	dmf_sprb_pipe_not_ready = 0x0040,
Packit 1fb8d4
	dmf_sprb_gdi_err = 0x0100,
Packit 1fb8d4
	dmf_sprb_owner_died = 0x0400,
Packit 1fb8d4
	dmf_sprb_tgtwnd_gone = 0x0800,
Packit 1fb8d4
	dmf_sprb_pdev_detached = 0x2000,
Packit 1fb8d4
} dmf_session_prob_status;
Packit 1fb8d4
Packit Service 5a9772
#define DMF_ESC_RET_FAILF 0x80000000
Packit Service 5a9772
#define DMF_ESC_RET_SSTMASK 0x0000FFFF
Packit Service 5a9772
#define DMF_ESC_RET_IMMMASK 0x7FFF0000
Packit 1fb8d4
Packit Service 5a9772
typedef enum
Packit 1fb8d4
{
Packit 1fb8d4
	dmf_escret_generic_ok = 0x00010000,
Packit 1fb8d4
	dmf_escret_bad_state = 0x00100000,
Packit 1fb8d4
	dmf_escret_access_denied = 0x00200000,
Packit 1fb8d4
	dmf_escret_bad_buffer_size = 0x00400000,
Packit 1fb8d4
	dmf_escret_internal_err = 0x00800000,
Packit 1fb8d4
	dmf_escret_out_of_memory = 0x02000000,
Packit 1fb8d4
	dmf_escret_already_connected = 0x04000000,
Packit 1fb8d4
	dmf_escret_oh_boy_too_late = 0x08000000,
Packit 1fb8d4
	dmf_escret_bad_window = 0x10000000,
Packit 1fb8d4
	dmf_escret_drv_ver_higher = 0x20000000,
Packit 1fb8d4
	dmf_escret_drv_ver_lower = 0x40000000,
Packit 1fb8d4
} dmf_esc_retcode;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	ULONG cbSize;
Packit 1fb8d4
	ULONG app_actual_version;
Packit 1fb8d4
	ULONG display_minreq_version;
Packit 1fb8d4
	ULONG connect_options;
Packit 1fb8d4
} Esc_dmf_Qvi_IN;
Packit 1fb8d4
Packit 1fb8d4
enum
Packit 1fb8d4
{
Packit 1fb8d4
	esc_qvi_prod_name_max = 16,
Packit 1fb8d4
};
Packit 1fb8d4
Packit Service 5a9772
#define ESC_QVI_PROD_MIRAGE "MIRAGE"
Packit Service 5a9772
#define ESC_QVI_PROD_QUASAR "QUASAR"
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	ULONG cbSize;
Packit 1fb8d4
	ULONG display_actual_version;
Packit 1fb8d4
	ULONG miniport_actual_version;
Packit 1fb8d4
	ULONG app_minreq_version;
Packit 1fb8d4
	ULONG display_buildno;
Packit 1fb8d4
	ULONG miniport_buildno;
Packit 1fb8d4
	char prod_name[esc_qvi_prod_name_max];
Packit 1fb8d4
} Esc_dmf_Qvi_OUT;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	ULONG cbSize;
Packit 1fb8d4
	char* pDstBmBuf;
Packit 1fb8d4
	ULONG nDstBmBufSize;
Packit 1fb8d4
} Esc_dmf_pointer_shape_get_IN;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	ULONG cbSize;
Packit 1fb8d4
	POINTL BmSize;
Packit 1fb8d4
	char* pMaskBm;
Packit 1fb8d4
	ULONG nMaskBmSize;
Packit 1fb8d4
	char* pColorBm;
Packit 1fb8d4
	ULONG nColorBmSize;
Packit 1fb8d4
	char* pColorBmPal;
Packit 1fb8d4
	ULONG nColorBmPalEntries;
Packit 1fb8d4
} Esc_dmf_pointer_shape_get_OUT;
Packit 1fb8d4
Packit 1fb8d4
BOOL wf_mirror_driver_find_display_device(wfInfo* wfi);
Packit 1fb8d4
BOOL wf_mirror_driver_display_device_attach(wfInfo* wfi, DWORD mode);
Packit 1fb8d4
BOOL wf_mirror_driver_update(wfInfo* wfi, int mode);
Packit 1fb8d4
BOOL wf_mirror_driver_map_memory(wfInfo* wfi);
Packit 1fb8d4
BOOL wf_mirror_driver_cleanup(wfInfo* wfi);
Packit 1fb8d4
Packit 1fb8d4
BOOL wf_mirror_driver_activate(wfInfo* wfi);
Packit 1fb8d4
void wf_mirror_driver_deactivate(wfInfo* wfi);
Packit 1fb8d4
Packit 1fb8d4
#endif /* FREERDP_SERVER_WIN_MIRAGE_H */