|
|
/****************************************************************************/ // 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;
|