You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
316 lines
15 KiB
316 lines
15 KiB
/****************************************************************************/
|
|
// nwdwioct.h
|
|
//
|
|
// Define formats for IOCtls sent ftom TShareDD to WDTShare
|
|
//
|
|
// Copyright(C) Microsoft Corporation 1997-1999
|
|
/****************************************************************************/
|
|
|
|
#include <tsrvexp.h>
|
|
|
|
|
|
/****************************************************************************/
|
|
/****************************************************************************/
|
|
/* IOCtl codes - WDTShare IOCTLs start at 0x510: 0x500-0x50f are reserved */
|
|
/* for use by PDMCS (see mcsioctl.h) */
|
|
/****************************************************************************/
|
|
/****************************************************************************/
|
|
|
|
/****************************************************************************/
|
|
/* IOCTL_WDTS_DD_CONNECT carries */
|
|
/* - TSHARE_DD_CONNECT_IN as input data */
|
|
/* - TSHARE_DD_CONNECT_OUT as output data */
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_CONNECT _ICA_CTL_CODE( 0x510, METHOD_NEITHER )
|
|
|
|
/****************************************************************************/
|
|
/* IOCTL_WDTS_DD_DISCONNECT carries */
|
|
/* - TSHARE_DD_DISCONNECT_IN as input data */
|
|
/* - NULL output data */
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_DISCONNECT _ICA_CTL_CODE( 0x511, METHOD_NEITHER )
|
|
|
|
/****************************************************************************/
|
|
/* IOCTL_WDTS_DD_RECONNECT carries */
|
|
/* - TSHARE_DD_CONNECT_IN as input data */
|
|
/* - TSHARE_DD_CONNECT_OUT as output data */
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_RECONNECT _ICA_CTL_CODE( 0x512, METHOD_NEITHER )
|
|
|
|
/****************************************************************************/
|
|
/* IOCTL_WDTS_DD_OUTPUT_AVAILABLE carries */
|
|
/* - TSHARE_DD_OUTPUT_IN as input data */
|
|
/* - TSHARE_DD_OUTPUT_OUT as output data */
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_OUTPUT_AVAILABLE \
|
|
_ICA_CTL_CODE( 0x513, METHOD_NEITHER )
|
|
|
|
/****************************************************************************/
|
|
/* IOCTL_WDTS_DD_TIMER_INFO carries */
|
|
/* - TSHARE_DD_TIMER_INFO as input data */
|
|
/* - NULL output data */
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_TIMER_INFO _ICA_CTL_CODE( 0x514, METHOD_NEITHER )
|
|
|
|
/****************************************************************************/
|
|
/* IOCTL_WDTS_DD_CLIP carries */
|
|
/* - CBM_EVENT_DATA as input data */
|
|
/* - NULL output data */
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_CLIP _ICA_CTL_CODE( 0x515, METHOD_NEITHER )
|
|
|
|
/****************************************************************************/
|
|
/* IOCTL_WDTS_DD_SHADOW_CONNECT */
|
|
/* - TSHARE_DD_CONNECT_IN as input data */
|
|
/* - TSHARE_DD_CONNECT_OUT as output data */
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_SHADOW_CONNECT _ICA_CTL_CODE( 0x516, METHOD_NEITHER )
|
|
|
|
/****************************************************************************/
|
|
/* IOCTL_WDTS_DD_SHADOW_DISCONNECT */
|
|
/* - TSHARE_DD_DISCONNECT_IN as input data */
|
|
/* - NULL output data */
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_SHADOW_DISCONNECT _ICA_CTL_CODE( 0x517, METHOD_NEITHER )
|
|
|
|
/****************************************************************************/
|
|
/* IOCTL_WDTS_DD_SHADOW_SYNCHRONIZE */
|
|
/* - TSHARE_DD_SHADOWSYNC_IN - as input data */
|
|
/* - NULL output data */
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_SHADOW_SYNCHRONIZE _ICA_CTL_CODE( 0x518, METHOD_NEITHER )
|
|
|
|
/****************************************************************************/
|
|
/* IOCTL_WDTS_DD_REDRAW_SCREEN */
|
|
/* - NULL input data */
|
|
/* - NULL output data */
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_REDRAW_SCREEN _ICA_CTL_CODE( 0x519, METHOD_NEITHER )
|
|
|
|
#ifdef DC_HICOLOR
|
|
/****************************************************************************/
|
|
/* IOCTL_WDTS_DD_QUERY_SHADOW_CAPS */
|
|
/* - NULL input data */
|
|
/* - Pointer to memory for shadow caps as output data */
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_QUERY_SHADOW_CAPS _ICA_CTL_CODE( 0x51A, METHOD_NEITHER )
|
|
#endif
|
|
|
|
/****************************************************************************/
|
|
// IOCTL_WDTS_DD_GET_BITMAP_KEYDATABASE
|
|
// - NULL input data
|
|
// - Pointer to memory for keydatabase
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_GET_BITMAP_KEYDATABASE _ICA_CTL_CODE( 0x51B, METHOD_NEITHER )
|
|
|
|
#ifdef DC_DEBUG
|
|
/****************************************************************************/
|
|
// IOCTL_WDTS_DD_ICABREAKONDEBUGGER
|
|
// - NULL input data
|
|
// - NULL output data
|
|
/****************************************************************************/
|
|
#define IOCTL_WDTS_DD_ICABREAKONDEBUGGER _ICA_CTL_CODE( 0x51C, METHOD_NEITHER )
|
|
#endif
|
|
|
|
/****************************************************************************/
|
|
/****************************************************************************/
|
|
/* IOCtl structures */
|
|
/****************************************************************************/
|
|
/****************************************************************************/
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: TSHARE_VIRTUAL_MODULE_DATA */
|
|
/* */
|
|
/* Description: Display Driver data for shadowing. This information is */
|
|
/* passed to the DrvShadowConnect() entry point of the target session. */
|
|
/****************************************************************************/
|
|
typedef struct tagTSHARE_VIRTUAL_MODULE_DATA {
|
|
|
|
//Combined capabilities for this client/host
|
|
unsigned capsLength;
|
|
TS_COMBINED_CAPABILITIES combinedCapabilities;
|
|
|
|
} TSHARE_VIRTUAL_MODULE_DATA, *PTSHARE_VIRTUAL_MODULE_DATA;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: TSHARE_DD_CONNECT_IN */
|
|
/* */
|
|
/* Description: Structure sent as input on IOCTL_WDTS_DD_(RE)CONNECT. */
|
|
/* Contains data items, created by DD, that WD needs to get values of. */
|
|
/****************************************************************************/
|
|
typedef struct tagTSHARE_DD_CONNECT_IN
|
|
{
|
|
UINT32 pad1; /* Avoid Citrix bug */
|
|
UINT32 pad2;
|
|
UINT32 pad3;
|
|
UINT32 pad4;
|
|
|
|
PVOID pShm;
|
|
unsigned DDShmSize; // Used for catching mismatched binaries.
|
|
|
|
/************************************************************************/
|
|
/* Following fields valid only on a reconnect */
|
|
/************************************************************************/
|
|
UINT32 desktopHeight;
|
|
UINT32 desktopWidth;
|
|
#ifdef DC_HICOLOR
|
|
UINT32 desktopBpp;
|
|
#endif
|
|
PKTIMER pKickTimer;
|
|
|
|
// The following fields are only used during shadow connect processing
|
|
UINT32 virtModuleDataLen;
|
|
PTSHARE_VIRTUAL_MODULE_DATA pVirtModuleData;
|
|
|
|
} TSHARE_DD_CONNECT_IN, * PTSHARE_DD_CONNECT_IN;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: TSHARE_DD_CONNECT_OUT */
|
|
/* */
|
|
/* Description: Structure returned by WD on IOCTL_WDTS_DD_(RE)CONNECT. */
|
|
/* Contains data items, created by WD, that DD needs to get values of. */
|
|
/****************************************************************************/
|
|
typedef struct tagTSHARE_DD_CONNECT_OUT
|
|
{
|
|
UINT32 pad1; /* Avoid Citrix bug */
|
|
UINT32 pad2;
|
|
UINT32 pad3;
|
|
UINT32 pad4;
|
|
|
|
// WARNING! Never ever reference this field. It is for kernel debugger
|
|
// use only. Pass any WD fields we need separately to avoid binary mismatch
|
|
// problems.
|
|
PVOID pTSWd;
|
|
|
|
// System space - shared data structures
|
|
PPROTOCOLSTATUS pProtocolStatus;
|
|
|
|
/************************************************************************/
|
|
/* Following two fields are meaningful only on reconnect */
|
|
/************************************************************************/
|
|
UINT32 desktopHeight;
|
|
UINT32 desktopWidth;
|
|
#ifdef DC_HICOLOR
|
|
UINT32 desktopBpp;
|
|
#endif
|
|
|
|
// Individual stack connection status. The secondary is used to store the
|
|
// status of the shadow stacks (if any).
|
|
NTSTATUS primaryStatus;
|
|
NTSTATUS secondaryStatus;
|
|
|
|
// Cache keys for populating the bitmap caches.
|
|
UINT32 bitmapKeyDatabaseSize;
|
|
|
|
// This field needs to be qword aligned
|
|
BYTE bitmapKeyDatabase;
|
|
} TSHARE_DD_CONNECT_OUT, * PTSHARE_DD_CONNECT_OUT;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: TSHARE_DD_DISCONNECT_IN */
|
|
/* */
|
|
/* Description: Structure sent as input on IOCTL_WDTS_DD_DISCONNECT. */
|
|
/****************************************************************************/
|
|
typedef struct tagTSHARE_DD_DISCONNECT_IN
|
|
{
|
|
UINT32 pad1; /* Avoid Citrix bug */
|
|
UINT32 pad2;
|
|
UINT32 pad3;
|
|
UINT32 pad4;
|
|
|
|
PVOID pShm;
|
|
BOOL bShadowDisconnect; // TRUE if we are disconnecting to setup a shadow
|
|
|
|
} TSHARE_DD_DISCONNECT_IN, * PTSHARE_DD_DISCONNECT_IN;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: TSHARE_DD_OUTPUT_IN */
|
|
/* */
|
|
/* Description: Structure sent by DD as input on IOCTL_WDTS_DD_OUTPUT */
|
|
/****************************************************************************/
|
|
typedef struct tagTSHARE_DD_OUTPUT_IN
|
|
{
|
|
UINT32 pad1; /* Avoid Citrix bug */
|
|
UINT32 pad2;
|
|
UINT32 pad3;
|
|
UINT32 pad4;
|
|
PVOID pShm;
|
|
BOOL forceSend; /* True if called due to explicit req. */
|
|
PBYTE pFrameBuf; /* address of frame buffer */
|
|
UINT32 frameBufWidth;
|
|
UINT32 frameBufHeight;
|
|
BOOL schedOnly; /* change sched state only - no send */
|
|
} TSHARE_DD_OUTPUT_IN, * PTSHARE_DD_OUTPUT_IN;
|
|
|
|
/****************************************************************************/
|
|
/* Structure: TSHARE_DD_OUTPUT_OUT */
|
|
/* */
|
|
/* Description: Structure returned to DD on IOCTL_WDTS_DD_OUTPUT */
|
|
/****************************************************************************/
|
|
typedef struct tagTSHARE_DD_OUTPUT_OUT
|
|
{
|
|
UINT32 schCurrentMode;
|
|
BOOL schInputKickMode;
|
|
} TSHARE_DD_OUTPUT_OUT, * PTSHARE_DD_OUTPUT_OUT;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: TSHARE_DD_TIMER_INFO */
|
|
/* */
|
|
/* Description: Structure sent by DD as input on IOCTL_WDTS_DD_TIMER_INFO. */
|
|
/* Contains info required by WD to be able to start a timer which will pop */
|
|
/* in the RIT of the correct WinStation. */
|
|
/****************************************************************************/
|
|
typedef struct tagTSHARE_DD_TIMER_INFO
|
|
{
|
|
UINT32 pad1; /* Avoid Citrix bug */
|
|
UINT32 pad2;
|
|
UINT32 pad3;
|
|
UINT32 pad4;
|
|
PKTIMER pKickTimer;
|
|
} TSHARE_DD_TIMER_INFO, * PTSHARE_DD_TIMER_INFO;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: TSHARE_DD_SHADOWSYNC_IN */
|
|
/* */
|
|
/* Description: Structure sent as input on IOCTL_WDTS_DD_SHADOW_SYNCHRONIZE */
|
|
/* Contains data items, created by DD, that WD needs to get values of. */
|
|
/****************************************************************************/
|
|
typedef struct tagTSHARE_DD_SHADOWSYNC_IN
|
|
{
|
|
UINT32 pad1; /* Avoid Citrix bug */
|
|
UINT32 pad2;
|
|
UINT32 pad3;
|
|
UINT32 pad4;
|
|
|
|
PVOID pShm;
|
|
|
|
#ifdef DC_HICOLOR
|
|
UINT32 capsLen;
|
|
PTS_COMBINED_CAPABILITIES pShadowCaps;
|
|
#endif
|
|
|
|
} TSHARE_DD_SHADOWSYNC_IN, * PTSHARE_DD_SHADOWSYNC_IN;
|
|
|
|
|
|
/****************************************************************************/
|
|
// Structure: TSHARE_DD_BITMAP_KEYDATABAE_OUT
|
|
//
|
|
// Description: Structure returned to DD on
|
|
// IOCTL_WDTS_DD_GET_BITMAP_KEYDATABAE_OUT
|
|
/****************************************************************************/
|
|
typedef struct tagTSHARE_DD_BITMAP_KEYDATABASE_OUT
|
|
{
|
|
UINT32 bitmapKeyDatabaseSize;
|
|
UINT32 pad;
|
|
|
|
// This is QWORD aligned
|
|
BYTE bitmapKeyDatabase;
|
|
} TSHARE_DD_BITMAP_KEYDATABASE_OUT, * PTSHARE_DD_BITMAP_KEYDATABASE_OUT;
|
|
|