FreeRDP
Loading...
Searching...
No Matches
win_shadow.h
1
19#ifndef FREERDP_SERVER_SHADOW_WIN_H
20#define FREERDP_SERVER_SHADOW_WIN_H
21
22#include <freerdp/assistance.h>
23
24#include <freerdp/server/shadow.h>
25
26typedef struct win_shadow_subsystem winShadowSubsystem;
27
28#include <winpr/crt.h>
29#include <winpr/synch.h>
30#include <winpr/thread.h>
31#include <winpr/stream.h>
32#include <winpr/collections.h>
33
34#include "win_rdp.h"
35#include "win_wds.h"
36#include "win_dxgi.h"
37
39{
40 rdpShadowSubsystem base;
41
42 int bpp;
43 int width;
44 int height;
45
46 /* Ctrl and Alt held on the remote keyboard: with Delete, the secure
47 * attention sequence */
48 BOOL ctrlDown;
49 BOOL altDown;
50
51 /* the sound capture (win_audio.c) */
52 HANDLE audioThread;
53 HANDLE audioStopEvent;
54
55#ifdef WITH_WDS_API
56 HWND hWnd;
57 shwContext* shw;
58 HANDLE RdpUpdateEnterEvent;
59 HANDLE RdpUpdateLeaveEvent;
60 rdpAssistanceFile* pAssistanceFile;
61 _IRDPSessionEvents* pSessionEvents;
62 IRDPSRAPISharingSession* pSharingSession;
63 IRDPSRAPIInvitation* pInvitation;
64 IRDPSRAPIInvitationManager* pInvitationMgr;
65 IRDPSRAPISessionProperties* pSessionProperties;
66 IRDPSRAPIVirtualChannelManager* pVirtualChannelMgr;
67 IRDPSRAPIApplicationFilter* pApplicationFilter;
68 IRDPSRAPIAttendeeManager* pAttendeeMgr;
69#endif
70
71#ifdef WITH_DXGI_1_2
72 UINT pendingFrames;
73 BYTE* MetadataBuffer;
74 UINT MetadataBufferSize;
75 BOOL dxgiSurfaceMapped;
76 BOOL dxgiFrameAcquired;
77 ID3D11Device* dxgiDevice;
78 IDXGISurface* dxgiSurface;
79 ID3D11Texture2D* dxgiStage;
80 IDXGIResource* dxgiResource;
81 D3D_FEATURE_LEVEL featureLevel;
82 ID3D11Texture2D* dxgiDesktopImage;
83 DXGI_OUTDUPL_FRAME_INFO dxgiFrameInfo;
84 ID3D11DeviceContext* dxgiDeviceContext;
85 IDXGIOutputDuplication* dxgiOutputDuplication;
86 /* the input desktop is one this process may not capture (the secure desktop for a process
87 * in the user's session): capture is paused */
88 BOOL dxgiDenied;
89 /* the earliest time the capture loop may create a missing duplication again: soon after a
90 * refused desktop, at a low rate after a failure which does not recover by itself */
91 UINT64 dxgiRetryTime;
92#endif
93};
94
95#ifdef __cplusplus
96extern "C"
97{
98#endif
99
100 /* Refreshes the monitor definition and the shadow screen when the
101 * desktop display mode changed. Returns 1 when the geometry changed,
102 * 0 when it did not and <0 on fatal error. */
103 WINPR_ATTR_NODISCARD
104 int win_shadow_check_resize(winShadowSubsystem* subsystem);
105
106#ifdef __cplusplus
107}
108#endif
109
110#endif /* FREERDP_SERVER_SHADOW_WIN_H */