Milestone 5: deliver embedded RDP sessions and lifecycle hardening
This commit is contained in:
70
third_party/FreeRDP/include/freerdp/channels/ainput.h
vendored
Normal file
70
third_party/FreeRDP/include/freerdp/channels/ainput.h
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Audio Input Redirection Virtual Channel
|
||||
*
|
||||
* Copyright 2022 Armin Novak <anovak@thincast.com>
|
||||
* Copyright 2022 Thincast Technologies GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_AINPUT_H
|
||||
#define FREERDP_CHANNEL_AINPUT_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
#define AINPUT_CHANNEL_NAME "ainput"
|
||||
#define AINPUT_DVC_CHANNEL_NAME "FreeRDP::Advanced::Input"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MSG_AINPUT_VERSION = 0x01,
|
||||
MSG_AINPUT_MOUSE = 0x02
|
||||
} eAInputMsgType;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
AINPUT_FLAGS_WHEEL = 0x0001,
|
||||
AINPUT_FLAGS_MOVE = 0x0004,
|
||||
AINPUT_FLAGS_DOWN = 0x0008,
|
||||
|
||||
AINPUT_FLAGS_REL = 0x0010,
|
||||
AINPUT_FLAGS_HAVE_REL = 0x0020,
|
||||
|
||||
/* Pointer Flags */
|
||||
AINPUT_FLAGS_BUTTON1 = 0x1000, /* left */
|
||||
AINPUT_FLAGS_BUTTON2 = 0x2000, /* right */
|
||||
AINPUT_FLAGS_BUTTON3 = 0x4000, /* middle */
|
||||
|
||||
/* Extended Pointer Flags */
|
||||
AINPUT_XFLAGS_BUTTON1 = 0x0100,
|
||||
AINPUT_XFLAGS_BUTTON2 = 0x0200
|
||||
} AInputEventFlags;
|
||||
|
||||
typedef struct ainput_client_context AInputClientContext;
|
||||
|
||||
#define AINPUT_VERSION_MAJOR 1
|
||||
#define AINPUT_VERSION_MINOR 0
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_AINPUT_H */
|
||||
134
third_party/FreeRDP/include/freerdp/channels/audin.h
vendored
Normal file
134
third_party/FreeRDP/include/freerdp/channels/audin.h
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Audio Input Redirection Virtual Channel
|
||||
*
|
||||
* Copyright 2010-2011 Vic Lee
|
||||
* Copyright 2023 Pascal Nowack <Pascal.Nowack@gmx.de>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_AUDIN_H
|
||||
#define FREERDP_CHANNEL_AUDIN_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/codec/audio.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define AUDIN_CHANNEL_NAME "audin"
|
||||
|
||||
/** The name of the channel (protocol internal)
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define AUDIN_DVC_CHANNEL_NAME "AUDIO_INPUT"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BYTE MessageId;
|
||||
} SNDIN_PDU;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SNDIN_VERSION_Invalid = 0x00000000,
|
||||
SNDIN_VERSION_Version_1 = 0x00000001,
|
||||
SNDIN_VERSION_Version_2 = 0x00000002,
|
||||
} SNDIN_VERSION_Version;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SNDIN_PDU Header;
|
||||
SNDIN_VERSION_Version Version;
|
||||
} SNDIN_VERSION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SNDIN_PDU Header;
|
||||
UINT32 NumFormats;
|
||||
UINT32 cbSizeFormatsPacket;
|
||||
AUDIO_FORMAT* SoundFormats;
|
||||
size_t ExtraDataSize;
|
||||
} SNDIN_FORMATS;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SPEAKER_FRONT_LEFT = 0x00000001,
|
||||
SPEAKER_FRONT_RIGHT = 0x00000002,
|
||||
SPEAKER_FRONT_CENTER = 0x00000004,
|
||||
SPEAKER_LOW_FREQUENCY = 0x00000008,
|
||||
SPEAKER_BACK_LEFT = 0x00000010,
|
||||
SPEAKER_BACK_RIGHT = 0x00000020,
|
||||
SPEAKER_FRONT_LEFT_OF_CENTER = 0x00000040,
|
||||
SPEAKER_FRONT_RIGHT_OF_CENTER = 0x00000080,
|
||||
SPEAKER_BACK_CENTER = 0x00000100,
|
||||
SPEAKER_SIDE_LEFT = 0x00000200,
|
||||
SPEAKER_SIDE_RIGHT = 0x00000400,
|
||||
SPEAKER_TOP_CENTER = 0x00000800,
|
||||
SPEAKER_TOP_FRONT_LEFT = 0x00001000,
|
||||
SPEAKER_TOP_FRONT_CENTER = 0x00002000,
|
||||
SPEAKER_TOP_FRONT_RIGHT = 0x00004000,
|
||||
SPEAKER_TOP_BACK_LEFT = 0x00008000,
|
||||
SPEAKER_TOP_BACK_CENTER = 0x00010000,
|
||||
SPEAKER_TOP_BACK_RIGHT = 0x00020000,
|
||||
} AUDIN_SPEAKER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
union
|
||||
{
|
||||
UINT16 wValidBitsPerSample;
|
||||
UINT16 wSamplesPerBlock;
|
||||
UINT16 wReserved;
|
||||
} Samples;
|
||||
AUDIN_SPEAKER dwChannelMask;
|
||||
GUID SubFormat;
|
||||
} WAVEFORMAT_EXTENSIBLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SNDIN_PDU Header;
|
||||
UINT32 FramesPerPacket;
|
||||
UINT32 initialFormat;
|
||||
AUDIO_FORMAT captureFormat;
|
||||
WAVEFORMAT_EXTENSIBLE* ExtraFormatData;
|
||||
} SNDIN_OPEN;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SNDIN_PDU Header;
|
||||
UINT32 Result;
|
||||
} SNDIN_OPEN_REPLY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SNDIN_PDU Header;
|
||||
} SNDIN_DATA_INCOMING;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SNDIN_PDU Header;
|
||||
wStream* Data;
|
||||
} SNDIN_DATA;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SNDIN_PDU Header;
|
||||
UINT32 NewFormat;
|
||||
} SNDIN_FORMATCHANGE;
|
||||
|
||||
#endif /* FREERDP_CHANNEL_AUDIN_H */
|
||||
121
third_party/FreeRDP/include/freerdp/channels/channels.h
vendored
Normal file
121
third_party/FreeRDP/include/freerdp/channels/channels.h
vendored
Normal file
@@ -0,0 +1,121 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Virtual Channel Manager
|
||||
*
|
||||
* Copyright 2009-2011 Jay Sorg
|
||||
* Copyright 2010-2011 Vic Lee
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNELS_H
|
||||
#define FREERDP_CHANNELS_H
|
||||
|
||||
#include <winpr/crt.h>
|
||||
#include <winpr/wtsapi.h>
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/types.h>
|
||||
#include <freerdp/settings.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/** @since version 3.9.0 */
|
||||
typedef BOOL (*freerdp_channel_handle_fkt_t)(rdpContext* context, void* userdata);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API int freerdp_channels_client_load(rdpChannels* channels, rdpSettings* settings,
|
||||
PVIRTUALCHANNELENTRY entry, void* data);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API int freerdp_channels_client_load_ex(rdpChannels* channels, rdpSettings* settings,
|
||||
PVIRTUALCHANNELENTRYEX entryEx, void* data);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API int freerdp_channels_load_plugin(rdpChannels* channels, rdpSettings* settings,
|
||||
const char* name, void* data);
|
||||
#if defined(WITH_FREERDP_DEPRECATED)
|
||||
WINPR_DEPRECATED_VAR("Use freerdp_channels_get_event_handle",
|
||||
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_channels_get_fds(
|
||||
rdpChannels* channels, freerdp* instance, void** read_fds,
|
||||
int* read_count, void** write_fds, int* write_count));
|
||||
#endif
|
||||
|
||||
FREERDP_API BOOL freerdp_channels_check_fds(rdpChannels* channels, freerdp* instance);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API void* freerdp_channels_get_static_channel_interface(rdpChannels* channels,
|
||||
const char* name);
|
||||
|
||||
/** @brief A channel may register an event handle and a callback function to be called by \b
|
||||
* freerdp_check_event_handles
|
||||
*
|
||||
* If a channel can not or does not want to use a thread to process data asynchronously it can
|
||||
* register a \b non-blocking function that does this processing. Notification is done with the
|
||||
* \b event-handle which will trigger the RDP loop. So this function is triggered until the \b
|
||||
* event-handle is reset.
|
||||
* @note This function may be called even without the \b event-handle to be set, so it must be
|
||||
* capable of handling these calls properly.
|
||||
*
|
||||
* @param channels A pointer to the channels instance to register with. Must not be \b nullptr
|
||||
* @param handle A \b event-handle to be used to notify the RDP main thread that the callback
|
||||
* function should be called again. Must not be \b INVALID_HANDLE_PARAM
|
||||
* @param fkt The callback function responsible to handle the channel specifics. Must not be \b
|
||||
* nullptr
|
||||
* @param userdata A pointer to a channel specific context. Most likely the channel context.
|
||||
* May be \b nullptr if not required.
|
||||
*
|
||||
* @return \b TRUE if successful, \b FALSE if any error occurs.
|
||||
* @since version 3.9.0 */
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API BOOL freerdp_client_channel_register(rdpChannels* channels, HANDLE handle,
|
||||
freerdp_channel_handle_fkt_t fkt,
|
||||
void* userdata);
|
||||
|
||||
/** @brief Remove an existing registration for \b event-handle from the channels instance
|
||||
*
|
||||
* @param channels A pointer to the channels instance to register with. Must not be \b nullptr
|
||||
* @param handle A \b event-handle to be used to notify the RDP main thread that the callback
|
||||
* function should be called again. Must not be \b INVALID_HANDLE_PARAM
|
||||
*
|
||||
* @return \b TRUE if successful, \b FALSE if any error occurs.
|
||||
* @since version 3.9.0 */
|
||||
FREERDP_API BOOL freerdp_client_channel_unregister(rdpChannels* channels, HANDLE handle);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API HANDLE freerdp_channels_get_event_handle(freerdp* instance);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API int freerdp_channels_process_pending_messages(freerdp* instance);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API BOOL freerdp_channels_data(freerdp* instance, UINT16 channelId, const BYTE* data,
|
||||
size_t dataSize, UINT32 flags, size_t totalSize);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API UINT16 freerdp_channels_get_id_by_name(freerdp* instance, const char* channel_name);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API const char* freerdp_channels_get_name_by_id(freerdp* instance, UINT16 channelId);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API const WtsApiFunctionTable* FreeRDP_InitWtsApi(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNELS_H */
|
||||
213
third_party/FreeRDP/include/freerdp/channels/cliprdr.h
vendored
Normal file
213
third_party/FreeRDP/include/freerdp/channels/cliprdr.h
vendored
Normal file
@@ -0,0 +1,213 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Clipboard Virtual Channel Extension
|
||||
*
|
||||
* Copyright 2013 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_CLIPRDR_H
|
||||
#define FREERDP_CHANNEL_CLIPRDR_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/types.h>
|
||||
#include <freerdp/utils/cliprdr_utils.h>
|
||||
|
||||
#include <winpr/shell.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define CLIPRDR_CHANNEL_NAME "cliprdr"
|
||||
#define CLIPRDR_SVC_CHANNEL_NAME "cliprdr"
|
||||
|
||||
/* CLIPRDR_HEADER.msgType */
|
||||
typedef enum
|
||||
{
|
||||
CB_TYPE_NONE = 0x0000, /** @since version 3.10.0 */
|
||||
CB_MONITOR_READY = 0x0001,
|
||||
CB_FORMAT_LIST = 0x0002,
|
||||
CB_FORMAT_LIST_RESPONSE = 0x0003,
|
||||
CB_FORMAT_DATA_REQUEST = 0x0004,
|
||||
CB_FORMAT_DATA_RESPONSE = 0x0005,
|
||||
CB_TEMP_DIRECTORY = 0x0006,
|
||||
CB_CLIP_CAPS = 0x0007,
|
||||
CB_FILECONTENTS_REQUEST = 0x0008,
|
||||
CB_FILECONTENTS_RESPONSE = 0x0009,
|
||||
CB_LOCK_CLIPDATA = 0x000A,
|
||||
CB_UNLOCK_CLIPDATA = 0x000B
|
||||
} CliprdrMsgType;
|
||||
|
||||
/* CLIPRDR_HEADER.msgFlags */
|
||||
#define CB_RESPONSE_OK 0x0001
|
||||
#define CB_RESPONSE_FAIL 0x0002
|
||||
#define CB_ASCII_NAMES 0x0004
|
||||
|
||||
/* CLIPRDR_CAPS_SET.capabilitySetType */
|
||||
#define CB_CAPSTYPE_GENERAL 0x0001
|
||||
|
||||
/* CLIPRDR_GENERAL_CAPABILITY.lengthCapability */
|
||||
#define CB_CAPSTYPE_GENERAL_LEN 12
|
||||
|
||||
/* CLIPRDR_GENERAL_CAPABILITY.version */
|
||||
#define CB_CAPS_VERSION_1 0x00000001
|
||||
#define CB_CAPS_VERSION_2 0x00000002
|
||||
|
||||
/* CLIPRDR_GENERAL_CAPABILITY.generalFlags */
|
||||
#define CB_USE_LONG_FORMAT_NAMES 0x00000002
|
||||
#define CB_STREAM_FILECLIP_ENABLED 0x00000004
|
||||
#define CB_FILECLIP_NO_FILE_PATHS 0x00000008
|
||||
#define CB_CAN_LOCK_CLIPDATA 0x00000010
|
||||
#define CB_HUGE_FILE_SUPPORT_ENABLED 0x00000020
|
||||
|
||||
/* File Contents Request Flags */
|
||||
#define FILECONTENTS_SIZE 0x00000001
|
||||
#define FILECONTENTS_RANGE 0x00000002
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/* Special Clipboard Response Formats */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 mappingMode;
|
||||
UINT32 xExt;
|
||||
UINT32 yExt;
|
||||
UINT32 metaFileSize;
|
||||
BYTE* metaFileData;
|
||||
} CLIPRDR_MFPICT;
|
||||
|
||||
/* Clipboard Messages */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 msgType;
|
||||
UINT16 msgFlags;
|
||||
UINT32 dataLen;
|
||||
} CLIPRDR_HEADER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 capabilitySetType;
|
||||
UINT16 capabilitySetLength;
|
||||
} CLIPRDR_CAPABILITY_SET;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 capabilitySetType;
|
||||
UINT16 capabilitySetLength;
|
||||
|
||||
UINT32 version;
|
||||
UINT32 generalFlags;
|
||||
} CLIPRDR_GENERAL_CAPABILITY_SET;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIPRDR_HEADER common;
|
||||
|
||||
UINT32 cCapabilitiesSets;
|
||||
CLIPRDR_CAPABILITY_SET* capabilitySets;
|
||||
} CLIPRDR_CAPABILITIES;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIPRDR_HEADER common;
|
||||
} CLIPRDR_MONITOR_READY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIPRDR_HEADER common;
|
||||
|
||||
char szTempDir[520];
|
||||
} CLIPRDR_TEMP_DIRECTORY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 formatId;
|
||||
char* formatName;
|
||||
} CLIPRDR_FORMAT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIPRDR_HEADER common;
|
||||
|
||||
UINT32 numFormats;
|
||||
CLIPRDR_FORMAT* formats;
|
||||
} CLIPRDR_FORMAT_LIST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIPRDR_HEADER common;
|
||||
} CLIPRDR_FORMAT_LIST_RESPONSE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIPRDR_HEADER common;
|
||||
|
||||
UINT32 clipDataId;
|
||||
} CLIPRDR_LOCK_CLIPBOARD_DATA;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIPRDR_HEADER common;
|
||||
|
||||
UINT32 clipDataId;
|
||||
} CLIPRDR_UNLOCK_CLIPBOARD_DATA;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIPRDR_HEADER common;
|
||||
|
||||
UINT32 requestedFormatId;
|
||||
} CLIPRDR_FORMAT_DATA_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIPRDR_HEADER common;
|
||||
|
||||
const BYTE* requestedFormatData;
|
||||
} CLIPRDR_FORMAT_DATA_RESPONSE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIPRDR_HEADER common;
|
||||
|
||||
UINT32 streamId;
|
||||
UINT32 listIndex;
|
||||
UINT32 dwFlags;
|
||||
UINT32 nPositionLow;
|
||||
UINT32 nPositionHigh;
|
||||
UINT32 cbRequested;
|
||||
BOOL haveClipDataId;
|
||||
UINT32 clipDataId;
|
||||
} CLIPRDR_FILE_CONTENTS_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CLIPRDR_HEADER common;
|
||||
|
||||
UINT32 streamId;
|
||||
UINT32 cbRequested;
|
||||
const BYTE* requestedData;
|
||||
} CLIPRDR_FILE_CONTENTS_RESPONSE;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_CLIPRDR_H */
|
||||
85
third_party/FreeRDP/include/freerdp/channels/disp.h
vendored
Normal file
85
third_party/FreeRDP/include/freerdp/channels/disp.h
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* RDPEDISP Virtual Channel Extension
|
||||
*
|
||||
* Copyright 2019 Kobi Mizrachi <kmizrachi18@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_DISP_H
|
||||
#define FREERDP_CHANNEL_DISP_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
#define DISPLAY_CONTROL_PDU_TYPE_CAPS 0x00000005
|
||||
#define DISPLAY_CONTROL_PDU_TYPE_MONITOR_LAYOUT 0x00000002
|
||||
#define DISPLAY_CONTROL_MONITOR_LAYOUT_SIZE 40
|
||||
|
||||
#define DISP_CHANNEL_NAME "disp"
|
||||
|
||||
#define DISP_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::DisplayControl"
|
||||
|
||||
#define DISPLAY_CONTROL_MONITOR_PRIMARY 0x00000001
|
||||
#define DISPLAY_CONTROL_HEADER_LENGTH 0x00000008
|
||||
|
||||
#define DISPLAY_CONTROL_MIN_MONITOR_WIDTH 200
|
||||
#define DISPLAY_CONTROL_MAX_MONITOR_WIDTH 8192
|
||||
|
||||
#define DISPLAY_CONTROL_MIN_MONITOR_HEIGHT 200
|
||||
#define DISPLAY_CONTROL_MAX_MONITOR_HEIGHT 8192
|
||||
|
||||
#define DISPLAY_CONTROL_MIN_PHYSICAL_MONITOR_WIDTH 10
|
||||
#define DISPLAY_CONTROL_MAX_PHYSICAL_MONITOR_WIDTH 10000
|
||||
|
||||
#define DISPLAY_CONTROL_MIN_PHYSICAL_MONITOR_HEIGHT 10
|
||||
#define DISPLAY_CONTROL_MAX_PHYSICAL_MONITOR_HEIGHT 10000
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 type;
|
||||
UINT32 length;
|
||||
} DISPLAY_CONTROL_HEADER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 Flags;
|
||||
INT32 Left;
|
||||
INT32 Top;
|
||||
UINT32 Width;
|
||||
UINT32 Height;
|
||||
UINT32 PhysicalWidth;
|
||||
UINT32 PhysicalHeight;
|
||||
UINT32 Orientation;
|
||||
UINT32 DesktopScaleFactor;
|
||||
UINT32 DeviceScaleFactor;
|
||||
} DISPLAY_CONTROL_MONITOR_LAYOUT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 MonitorLayoutSize;
|
||||
UINT32 NumMonitors;
|
||||
DISPLAY_CONTROL_MONITOR_LAYOUT* Monitors;
|
||||
} DISPLAY_CONTROL_MONITOR_LAYOUT_PDU;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_DISP_H */
|
||||
72
third_party/FreeRDP/include/freerdp/channels/drdynvc.h
vendored
Normal file
72
third_party/FreeRDP/include/freerdp/channels/drdynvc.h
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Dynamic Virtual Channel Virtual Channel
|
||||
*
|
||||
* Copyright 2021 Armin Novak <anovak@thincast.com>
|
||||
* Copyright 2021 Thincast Technologies GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_DRDYNVC_H
|
||||
#define FREERDP_CHANNEL_DRDYNVC_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define DRDYNVC_CHANNEL_NAME "drdynvc"
|
||||
#define DRDYNVC_SVC_CHANNEL_NAME "drdynvc"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/* defined in MS-RDPEDYC 2.2.5.1 Soft-Sync Request PDU (DYNVC_SOFT_SYNC_REQUEST) */
|
||||
enum
|
||||
{
|
||||
SOFT_SYNC_TCP_FLUSHED = 0x01,
|
||||
SOFT_SYNC_CHANNEL_LIST_PRESENT = 0x02
|
||||
};
|
||||
|
||||
/* define in MS-RDPEDYC 2.2.5.1.1 Soft-Sync Channel List (DYNVC_SOFT_SYNC_CHANNEL_LIST) */
|
||||
enum
|
||||
{
|
||||
TUNNELTYPE_UDPFECR = 0x00000001,
|
||||
TUNNELTYPE_UDPFECL = 0x00000003
|
||||
};
|
||||
|
||||
/* @brief dynamic channel commands */
|
||||
typedef enum
|
||||
{
|
||||
CREATE_REQUEST_PDU = 0x01,
|
||||
DATA_FIRST_PDU = 0x02,
|
||||
DATA_PDU = 0x03,
|
||||
CLOSE_REQUEST_PDU = 0x04,
|
||||
CAPABILITY_REQUEST_PDU = 0x05,
|
||||
DATA_FIRST_COMPRESSED_PDU = 0x06,
|
||||
DATA_COMPRESSED_PDU = 0x07,
|
||||
SOFT_SYNC_REQUEST_PDU = 0x08,
|
||||
SOFT_SYNC_RESPONSE_PDU = 0x09
|
||||
} DynamicChannelPDU;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_DRDYNVC_H */
|
||||
42
third_party/FreeRDP/include/freerdp/channels/echo.h
vendored
Normal file
42
third_party/FreeRDP/include/freerdp/channels/echo.h
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Audio Input Redirection Virtual Channel
|
||||
*
|
||||
* Copyright 2020 Armin Novak <anovak@thincast.com>
|
||||
* Copyright 2020 Thincast Technologies GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_ECHO_H
|
||||
#define FREERDP_CHANNEL_ECHO_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define ECHO_CHANNEL_NAME "echo"
|
||||
#define ECHO_DVC_CHANNEL_NAME "ECHO"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* FREERDP_CHANNEL_ECHO_H */
|
||||
186
third_party/FreeRDP/include/freerdp/channels/encomsp.h
vendored
Normal file
186
third_party/FreeRDP/include/freerdp/channels/encomsp.h
vendored
Normal file
@@ -0,0 +1,186 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Multiparty Virtual Channel
|
||||
*
|
||||
* Copyright 2014 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_ENCOMSP_H
|
||||
#define FREERDP_CHANNEL_ENCOMSP_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define ENCOMSP_CHANNEL_NAME "encomsp"
|
||||
#define ENCOMSP_SVC_CHANNEL_NAME "encomsp"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 cchString;
|
||||
WCHAR wString[1024];
|
||||
} ENCOMSP_UNICODE_STRING;
|
||||
|
||||
/* Filter Updated PDU Flags */
|
||||
|
||||
#define ENCOMSP_FILTER_ENABLED 0x0001
|
||||
|
||||
/* Application Created PDU Flags */
|
||||
|
||||
#define ENCOMSP_APPLICATION_SHARED 0x0001
|
||||
|
||||
/* Window Created PDU Flags */
|
||||
|
||||
#define ENCOMSP_WINDOW_SHARED 0x0001
|
||||
|
||||
/* Participant Created PDU Flags */
|
||||
|
||||
#define ENCOMSP_MAY_VIEW 0x0001
|
||||
#define ENCOMSP_MAY_INTERACT 0x0002
|
||||
#define ENCOMSP_IS_PARTICIPANT 0x0004
|
||||
|
||||
/* Participant Removed PDU Disconnection Types */
|
||||
|
||||
#define ENCOMSP_PARTICIPANT_DISCONNECTION_REASON_APP 0x00000000
|
||||
#define ENCOMSP_PARTICIPANT_DISCONNECTION_REASON_CLI 0x00000002
|
||||
|
||||
/* Change Participant Control Level PDU Flags */
|
||||
|
||||
#define ENCOMSP_REQUEST_VIEW 0x0001
|
||||
#define ENCOMSP_REQUEST_INTERACT 0x0002
|
||||
#define ENCOMSP_ALLOW_CONTROL_REQUESTS 0x0008
|
||||
|
||||
/* PDU Order Types */
|
||||
|
||||
#define ODTYPE_FILTER_STATE_UPDATED 0x0001
|
||||
#define ODTYPE_APP_REMOVED 0x0002
|
||||
#define ODTYPE_APP_CREATED 0x0003
|
||||
#define ODTYPE_WND_REMOVED 0x0004
|
||||
#define ODTYPE_WND_CREATED 0x0005
|
||||
#define ODTYPE_WND_SHOW 0x0006
|
||||
#define ODTYPE_PARTICIPANT_REMOVED 0x0007
|
||||
#define ODTYPE_PARTICIPANT_CREATED 0x0008
|
||||
#define ODTYPE_PARTICIPANT_CTRL_CHANGED 0x0009
|
||||
#define ODTYPE_GRAPHICS_STREAM_PAUSED 0x000A
|
||||
#define ODTYPE_GRAPHICS_STREAM_RESUMED 0x000B
|
||||
|
||||
#define DEFINE_ENCOMSP_HEADER_COMMON() \
|
||||
UINT16 Type; \
|
||||
UINT16 Length
|
||||
|
||||
#define ENCOMSP_ORDER_HEADER_SIZE 4
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_ENCOMSP_HEADER_COMMON();
|
||||
} ENCOMSP_ORDER_HEADER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_ENCOMSP_HEADER_COMMON();
|
||||
|
||||
BYTE Flags;
|
||||
} ENCOMSP_FILTER_UPDATED_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_ENCOMSP_HEADER_COMMON();
|
||||
|
||||
UINT16 Flags;
|
||||
UINT32 AppId;
|
||||
ENCOMSP_UNICODE_STRING Name;
|
||||
} ENCOMSP_APPLICATION_CREATED_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_ENCOMSP_HEADER_COMMON();
|
||||
|
||||
UINT32 AppId;
|
||||
} ENCOMSP_APPLICATION_REMOVED_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_ENCOMSP_HEADER_COMMON();
|
||||
|
||||
UINT16 Flags;
|
||||
UINT32 AppId;
|
||||
UINT32 WndId;
|
||||
ENCOMSP_UNICODE_STRING Name;
|
||||
} ENCOMSP_WINDOW_CREATED_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_ENCOMSP_HEADER_COMMON();
|
||||
|
||||
UINT32 WndId;
|
||||
} ENCOMSP_WINDOW_REMOVED_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_ENCOMSP_HEADER_COMMON();
|
||||
|
||||
UINT32 WndId;
|
||||
} ENCOMSP_SHOW_WINDOW_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_ENCOMSP_HEADER_COMMON();
|
||||
|
||||
UINT32 ParticipantId;
|
||||
UINT32 GroupId;
|
||||
UINT16 Flags;
|
||||
ENCOMSP_UNICODE_STRING FriendlyName;
|
||||
} ENCOMSP_PARTICIPANT_CREATED_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_ENCOMSP_HEADER_COMMON();
|
||||
|
||||
UINT32 ParticipantId;
|
||||
UINT32 DiscType;
|
||||
UINT32 DiscCode;
|
||||
} ENCOMSP_PARTICIPANT_REMOVED_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_ENCOMSP_HEADER_COMMON();
|
||||
|
||||
UINT16 Flags;
|
||||
UINT32 ParticipantId;
|
||||
} ENCOMSP_CHANGE_PARTICIPANT_CONTROL_LEVEL_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_ENCOMSP_HEADER_COMMON();
|
||||
} ENCOMSP_GRAPHICS_STREAM_PAUSED_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_ENCOMSP_HEADER_COMMON();
|
||||
} ENCOMSP_GRAPHICS_STREAM_RESUMED_PDU;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_ENCOMSP_H */
|
||||
73
third_party/FreeRDP/include/freerdp/channels/geometry.h
vendored
Normal file
73
third_party/FreeRDP/include/freerdp/channels/geometry.h
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Geometry tracking Virtual Channel Extension
|
||||
*
|
||||
* Copyright 2017 David Fort <contact@hardening-consulting.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_GEOMETRY_H
|
||||
#define FREERDP_CHANNEL_GEOMETRY_H
|
||||
|
||||
#include <winpr/wtypes.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define GEOMETRY_CHANNEL_NAME "geometry"
|
||||
#define GEOMETRY_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::Geometry::v08.01"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
enum
|
||||
{
|
||||
GEOMETRY_UPDATE = 1,
|
||||
GEOMETRY_CLEAR = 2
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
RDH_RECTANGLE = 1
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDP_RECT boundingRect;
|
||||
UINT32 nRectCount;
|
||||
RDP_RECT* rects;
|
||||
} FREERDP_RGNDATA;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 version;
|
||||
UINT64 mappingId;
|
||||
UINT32 updateType;
|
||||
UINT64 topLevelId;
|
||||
INT32 left, top, right, bottom;
|
||||
INT32 topLevelLeft, topLevelTop, topLevelRight, topLevelBottom;
|
||||
UINT32 geometryType;
|
||||
|
||||
FREERDP_RGNDATA geometry;
|
||||
} MAPPED_GEOMETRY_PACKET;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_GEOMETRY_H */
|
||||
165
third_party/FreeRDP/include/freerdp/channels/gfxredir.h
vendored
Normal file
165
third_party/FreeRDP/include/freerdp/channels/gfxredir.h
vendored
Normal file
@@ -0,0 +1,165 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* RDPXXXX Remote App Graphics Redirection Virtual Channel Extension
|
||||
*
|
||||
* Copyright 2020 Hideyuki Nagase <hideyukn@microsoft.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_GFXREDIR_H
|
||||
#define FREERDP_CHANNEL_GFXREDIR_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#define GFXREDIR_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::RemoteAppGraphicsRedirection"
|
||||
|
||||
/* GFXREDIR_LEGACY_CAPS_PDU.version */
|
||||
#define GFXREDIR_CHANNEL_VERSION_LEGACY 1
|
||||
|
||||
#define GFXREDIR_CHANNEL_VERSION_MAJOR 2
|
||||
#define GFXREDIR_CHANNEL_VERSION_MINOR 0
|
||||
|
||||
/* GFXREDIR_CAPS_VERSION1 */
|
||||
#define GFXREDIR_CMDID_LEGACY_CAPS 0x00000001
|
||||
#define GFXREDIR_CMDID_ERROR 0x00000006
|
||||
#define GFXREDIR_CMDID_CAPS_ADVERTISE 0x00000008
|
||||
#define GFXREDIR_CMDID_CAPS_CONFIRM 0x00000009
|
||||
/* GFXREDIR_CAPS_VERSION2_0 */
|
||||
#define GFXREDIR_CMDID_OPEN_POOL 0x0000000a
|
||||
#define GFXREDIR_CMDID_CLOSE_POOL 0x0000000b
|
||||
#define GFXREDIR_CMDID_CREATE_BUFFER 0x0000000c
|
||||
#define GFXREDIR_CMDID_DESTROY_BUFFER 0x0000000d
|
||||
#define GFXREDIR_CMDID_PRESENT_BUFFER 0x0000000e
|
||||
#define GFXREDIR_CMDID_PRESENT_BUFFER_ACK 0x0000000f
|
||||
|
||||
/* GFXREDIR_HEADER */
|
||||
#define GFXREDIR_HEADER_SIZE 8
|
||||
|
||||
/* GFXREDIR_CAPS_HEADER */
|
||||
#define GFXREDIR_CAPS_HEADER_SIZE 12
|
||||
/* GFXREDIR_CAPS_HEADER.signature */
|
||||
#define GFXREDIR_CAPS_SIGNATURE 0x53504143 /* = 'SPAC' */
|
||||
/* GFXREDIR_CAPS_HEADER.version */
|
||||
#define GFXREDIR_CAPS_VERSION1 0x1
|
||||
#define GFXREDIR_CAPS_VERSION2_0 0x2000
|
||||
|
||||
/* GFXREDIR_CREATE_BUFFER_PDU.format */
|
||||
#define GFXREDIR_BUFFER_PIXEL_FORMAT_XRGB_8888 1
|
||||
#define GFXREDIR_BUFFER_PIXEL_FORMAT_ARGB_8888 2
|
||||
|
||||
/* GFXREDIR_PRESENT_BUFFER_PDU.numOpaqueRects */
|
||||
#define GFXREDIR_MAX_OPAQUE_RECTS 0x10
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 cmdId;
|
||||
UINT32 length;
|
||||
} GFXREDIR_HEADER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 version; // GFXREDIR_CHANNEL_VERSION_LEGACY
|
||||
} GFXREDIR_LEGACY_CAPS_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 signature; // GFXREDIR_CAPS_SIGNATURE
|
||||
UINT32 version; // GFXREDIR_CAPS_VERSION
|
||||
UINT32 length; // GFXREDIR_CAPS_HEADER_SIZE + size of capsData
|
||||
} GFXREDIR_CAPS_HEADER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GFXREDIR_CAPS_HEADER header;
|
||||
UINT32 supportedFeatures; /* Reserved for future extensions */
|
||||
} GFXREDIR_CAPS_V2_0_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 errorCode;
|
||||
} GFXREDIR_ERROR_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 length; // length of caps;
|
||||
const BYTE* caps; // points variable length array of GFXREDIR_CAPS_HEADER.
|
||||
} GFXREDIR_CAPS_ADVERTISE_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 version; // confirmed version, must be one of advertised by client.
|
||||
UINT32 length; // GFXREDIR_CAPS_HEADER_SIZE + size of capsData.
|
||||
const BYTE* capsData; // confirmed capsData from selected GFXREDIR_CAPS_HEADER.capsData.
|
||||
} GFXREDIR_CAPS_CONFIRM_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT64 poolId;
|
||||
UINT64 poolSize;
|
||||
UINT32 sectionNameLength; // number of characters, must include null terminated char.
|
||||
const unsigned short* sectionName; // Windows-style 2 bytes wchar_t with null-terminated.
|
||||
} GFXREDIR_OPEN_POOL_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT64 poolId;
|
||||
} GFXREDIR_CLOSE_POOL_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT64 poolId;
|
||||
UINT64 bufferId;
|
||||
UINT64 offset;
|
||||
UINT32 stride;
|
||||
UINT32 width;
|
||||
UINT32 height;
|
||||
UINT32 format; // GFXREDIR_BUFFER_PIXEL_FORMAT_
|
||||
} GFXREDIR_CREATE_BUFFER_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT64 bufferId;
|
||||
} GFXREDIR_DESTROY_BUFFER_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT64 timestamp;
|
||||
UINT64 presentId;
|
||||
UINT64 windowId;
|
||||
UINT64 bufferId;
|
||||
UINT32 orientation; // 0, 90, 180 or 270.
|
||||
UINT32 targetWidth;
|
||||
UINT32 targetHeight;
|
||||
RECTANGLE_32 dirtyRect;
|
||||
UINT32 numOpaqueRects;
|
||||
RECTANGLE_32* opaqueRects;
|
||||
} GFXREDIR_PRESENT_BUFFER_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT64 windowId;
|
||||
UINT64 presentId;
|
||||
} GFXREDIR_PRESENT_BUFFER_ACK_PDU;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_GFXREDIR_H */
|
||||
128
third_party/FreeRDP/include/freerdp/channels/location.h
vendored
Normal file
128
third_party/FreeRDP/include/freerdp/channels/location.h
vendored
Normal file
@@ -0,0 +1,128 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Location Virtual Channel Extension
|
||||
*
|
||||
* Copyright 2023 Pascal Nowack <Pascal.Nowack@gmx.de>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_LOCATION_H
|
||||
#define FREERDP_CHANNEL_LOCATION_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** @defgroup channel_location Location Channel
|
||||
* @brief Location channel providing redirection of client side Network/GPS location to the RDP
|
||||
* server
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define LOCATION_CHANNEL_NAME "location" /** @since version 3.4.0 */
|
||||
|
||||
#define LOCATION_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::Location"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PDUTYPE_LOC_RESERVED = 0x0000,
|
||||
PDUTYPE_SERVER_READY = 0x0001,
|
||||
PDUTYPE_CLIENT_READY = 0x0002,
|
||||
PDUTYPE_BASE_LOCATION3D = 0x0003,
|
||||
PDUTYPE_LOCATION2D_DELTA = 0x0004,
|
||||
PDUTYPE_LOCATION3D_DELTA = 0x0005,
|
||||
} LOCATION_PDUTYPE;
|
||||
|
||||
#define LOCATION_HEADER_SIZE 6
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LOCATION_PDUTYPE pduType;
|
||||
UINT32 pduLength;
|
||||
} RDPLOCATION_HEADER;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
RDPLOCATION_PROTOCOL_VERSION_100 = 0x00010000,
|
||||
RDPLOCATION_PROTOCOL_VERSION_200 = 0x00020000,
|
||||
} RDPLOCATION_PROTOCOL_VERSION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDPLOCATION_HEADER header;
|
||||
RDPLOCATION_PROTOCOL_VERSION protocolVersion;
|
||||
UINT32 flags;
|
||||
} RDPLOCATION_SERVER_READY_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDPLOCATION_HEADER header;
|
||||
RDPLOCATION_PROTOCOL_VERSION protocolVersion;
|
||||
UINT32 flags;
|
||||
} RDPLOCATION_CLIENT_READY_PDU;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
LOCATIONSOURCE_IP = 0x00,
|
||||
LOCATIONSOURCE_WIFI = 0x01,
|
||||
LOCATIONSOURCE_CELL = 0x02,
|
||||
LOCATIONSOURCE_GNSS = 0x03,
|
||||
} LOCATIONSOURCE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDPLOCATION_HEADER header;
|
||||
double latitude;
|
||||
double longitude;
|
||||
INT32 altitude;
|
||||
double* speed;
|
||||
double* heading;
|
||||
double* horizontalAccuracy;
|
||||
LOCATIONSOURCE* source;
|
||||
} RDPLOCATION_BASE_LOCATION3D_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDPLOCATION_HEADER header;
|
||||
double latitudeDelta;
|
||||
double longitudeDelta;
|
||||
double* speedDelta;
|
||||
double* headingDelta;
|
||||
} RDPLOCATION_LOCATION2D_DELTA_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDPLOCATION_HEADER header;
|
||||
double latitudeDelta;
|
||||
double longitudeDelta;
|
||||
INT32 altitudeDelta;
|
||||
double* speedDelta;
|
||||
double* headingDelta;
|
||||
} RDPLOCATION_LOCATION3D_DELTA_PDU;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
#endif /* FREERDP_CHANNEL_LOCATION_H */
|
||||
35
third_party/FreeRDP/include/freerdp/channels/log.h
vendored
Normal file
35
third_party/FreeRDP/include/freerdp/channels/log.h
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Channel log defines
|
||||
*
|
||||
* Copyright 2014 Armin Novak <armin.novak@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNELS_LOG_H
|
||||
#define FREERDP_CHANNELS_LOG_H
|
||||
|
||||
#include <winpr/wlog.h>
|
||||
#include <freerdp/log.h>
|
||||
|
||||
#define CHANNELS_TAG(tag) FREERDP_TAG("channels.") tag
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* FREERDP_UTILS_DEBUG_H */
|
||||
26
third_party/FreeRDP/include/freerdp/channels/rail.h
vendored
Normal file
26
third_party/FreeRDP/include/freerdp/channels/rail.h
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Remote Applications Integrated Locally (RAIL)
|
||||
*
|
||||
* Copyright 2013 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_RAIL_H
|
||||
#define FREERDP_CHANNEL_RAIL_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
#endif /* FREERDP_CHANNEL_RAIL_H */
|
||||
38
third_party/FreeRDP/include/freerdp/channels/rdp2tcp.h
vendored
Normal file
38
third_party/FreeRDP/include/freerdp/channels/rdp2tcp.h
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* TCP redirection Virtual Channel
|
||||
*
|
||||
* Copyright 2021 Armin Novak <anovak@thincast.com>
|
||||
* Copyright 2021 Thincast Technologies GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_RDP2TCP_H
|
||||
#define FREERDP_CHANNEL_RDP2TCP_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
#define RDP2TCP_DVC_CHANNEL_NAME "rdp2tcp"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* FREERDP_CHANNEL_RDP2TCP_H */
|
||||
396
third_party/FreeRDP/include/freerdp/channels/rdpdr.h
vendored
Normal file
396
third_party/FreeRDP/include/freerdp/channels/rdpdr.h
vendored
Normal file
@@ -0,0 +1,396 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Device Redirection Virtual Channel
|
||||
*
|
||||
* Copyright 2010-2011 Vic Lee
|
||||
* Copyright 2010-2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
* Copyright 2015 Thincast Technologies GmbH
|
||||
* Copyright 2015 DI (FH) Martin Haimberger <martin.haimberger@thincast.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_RDPDR_H
|
||||
#define FREERDP_CHANNEL_RDPDR_H
|
||||
|
||||
#include <winpr/nt.h>
|
||||
#include <winpr/io.h>
|
||||
#include <winpr/crt.h>
|
||||
#include <winpr/file.h>
|
||||
#include <winpr/synch.h>
|
||||
#include <winpr/thread.h>
|
||||
#include <winpr/stream.h>
|
||||
#include <winpr/interlocked.h>
|
||||
#include <winpr/collections.h>
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/types.h>
|
||||
#include <freerdp/settings.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define RDPDR_CHANNEL_NAME "rdpdr"
|
||||
#define RDPDR_SVC_CHANNEL_NAME "rdpdr"
|
||||
|
||||
#define RDPDR_DEVICE_IO_REQUEST_LENGTH 24
|
||||
#define RDPDR_DEVICE_IO_RESPONSE_LENGTH 16
|
||||
|
||||
#define RDPDR_DEVICE_IO_CONTROL_REQ_HDR_LENGTH 32
|
||||
#define RDPDR_DEVICE_IO_CONTROL_RSP_HDR_LENGTH 4
|
||||
|
||||
#define RDPDR_VERSION_MAJOR 0x0001
|
||||
|
||||
#define RDPDR_VERSION_MINOR_RDP50 0x0002
|
||||
#define RDPDR_VERSION_MINOR_RDP51 0x0005
|
||||
#define RDPDR_VERSION_MINOR_RDP52 0x000A
|
||||
#define RDPDR_VERSION_MINOR_RDP6X 0x000C
|
||||
#define RDPDR_VERSION_MINOR_RDP10X 0x000D
|
||||
|
||||
/* RDPDR_HEADER.Component */
|
||||
enum RDPDR_CTYP
|
||||
{
|
||||
RDPDR_CTYP_CORE = 0x4472,
|
||||
RDPDR_CTYP_PRN = 0x5052
|
||||
};
|
||||
|
||||
/* RDPDR_HEADER.PacketId */
|
||||
enum RDPDR_PAKID
|
||||
{
|
||||
PAKID_CORE_SERVER_ANNOUNCE = 0x496E,
|
||||
PAKID_CORE_CLIENTID_CONFIRM = 0x4343,
|
||||
PAKID_CORE_CLIENT_NAME = 0x434E,
|
||||
PAKID_CORE_DEVICELIST_ANNOUNCE = 0x4441,
|
||||
PAKID_CORE_DEVICE_REPLY = 0x6472,
|
||||
PAKID_CORE_DEVICE_IOREQUEST = 0x4952,
|
||||
PAKID_CORE_DEVICE_IOCOMPLETION = 0x4943,
|
||||
PAKID_CORE_SERVER_CAPABILITY = 0x5350,
|
||||
PAKID_CORE_CLIENT_CAPABILITY = 0x4350,
|
||||
PAKID_CORE_DEVICELIST_REMOVE = 0x444D,
|
||||
PAKID_CORE_USER_LOGGEDON = 0x554C,
|
||||
PAKID_PRN_CACHE_DATA = 0x5043,
|
||||
PAKID_PRN_USING_XPS = 0x5543
|
||||
};
|
||||
|
||||
/* CAPABILITY_HEADER.CapabilityType */
|
||||
enum RDPDR_CAP_TYPE
|
||||
{
|
||||
CAP_GENERAL_TYPE = 0x0001,
|
||||
CAP_PRINTER_TYPE = 0x0002,
|
||||
CAP_PORT_TYPE = 0x0003,
|
||||
CAP_DRIVE_TYPE = 0x0004,
|
||||
CAP_SMARTCARD_TYPE = 0x0005
|
||||
};
|
||||
|
||||
/* CAPABILITY_HEADER.Version */
|
||||
enum RDPDR_CAP_VERSION
|
||||
{
|
||||
GENERAL_CAPABILITY_VERSION_01 = 0x00000001,
|
||||
GENERAL_CAPABILITY_VERSION_02 = 0x00000002,
|
||||
PRINT_CAPABILITY_VERSION_01 = 0x00000001,
|
||||
PORT_CAPABILITY_VERSION_01 = 0x00000001,
|
||||
DRIVE_CAPABILITY_VERSION_01 = 0x00000001,
|
||||
DRIVE_CAPABILITY_VERSION_02 = 0x00000002,
|
||||
SMARTCARD_CAPABILITY_VERSION_01 = 0x00000001
|
||||
};
|
||||
|
||||
/* DR_DEVICE_IOREQUEST.MajorFunction */
|
||||
enum IRP_MJ
|
||||
{
|
||||
IRP_MJ_CREATE = 0x00000000,
|
||||
IRP_MJ_CLOSE = 0x00000002,
|
||||
IRP_MJ_READ = 0x00000003,
|
||||
IRP_MJ_WRITE = 0x00000004,
|
||||
IRP_MJ_DEVICE_CONTROL = 0x0000000E,
|
||||
IRP_MJ_QUERY_VOLUME_INFORMATION = 0x0000000A,
|
||||
IRP_MJ_SET_VOLUME_INFORMATION = 0x0000000B,
|
||||
IRP_MJ_QUERY_INFORMATION = 0x00000005,
|
||||
IRP_MJ_SET_INFORMATION = 0x00000006,
|
||||
IRP_MJ_DIRECTORY_CONTROL = 0x0000000C,
|
||||
IRP_MJ_LOCK_CONTROL = 0x00000011
|
||||
};
|
||||
|
||||
/* DR_DEVICE_IOREQUEST.MinorFunction */
|
||||
enum IRP_MN
|
||||
{
|
||||
IRP_MN_QUERY_DIRECTORY = 0x00000001,
|
||||
IRP_MN_NOTIFY_CHANGE_DIRECTORY = 0x00000002
|
||||
};
|
||||
|
||||
/* DR_CREATE_REQ.CreateDisposition */
|
||||
|
||||
/* DR_CREATE_REQ.CreateOptions [MS-SMB2] */
|
||||
|
||||
/* DR_CREATE_REQ.DesiredAccess [MS-SMB2] */
|
||||
|
||||
/* DR_CREATE_RSP.Information */
|
||||
/* DR_DRIVE_CREATE_RSP.DeviceCreateResponse */
|
||||
|
||||
|
||||
/* DR_CORE_CLIENT_ANNOUNCE_RSP.VersionMinor */
|
||||
#define RDPDR_MAJOR_RDP_VERSION 1
|
||||
enum RDPDR_MINOR_RDP_VERSION
|
||||
{
|
||||
RDPDR_MINOR_RDP_VERSION_5_0 = 0x0002,
|
||||
RDPDR_MINOR_RDP_VERSION_5_1 = 0x0005,
|
||||
RDPDR_MINOR_RDP_VERSION_5_2 = 0x000A,
|
||||
RDPDR_MINOR_RDP_VERSION_6_X = 0x000C,
|
||||
RDPDR_MINOR_RDP_VERSION_13 = 0x000D
|
||||
};
|
||||
|
||||
/* DR_CORE_CLIENT_NAME_REQ.UnicodeFlag */
|
||||
enum RDPDR_CLIENT_NAME_FLAG
|
||||
{
|
||||
RDPDR_CLIENT_NAME_UNICODE = 0x00000001,
|
||||
RDPDR_CLIENT_NAME_ASCII = 0x00000000
|
||||
};
|
||||
|
||||
/* GENERAL_CAPS_SET.ioCode1 */
|
||||
enum RDPDR_CAPS_IRP_MJ
|
||||
{
|
||||
RDPDR_IRP_MJ_CREATE = 0x00000001,
|
||||
RDPDR_IRP_MJ_CLEANUP = 0x00000002,
|
||||
RDPDR_IRP_MJ_CLOSE = 0x00000004,
|
||||
RDPDR_IRP_MJ_READ = 0x00000008,
|
||||
RDPDR_IRP_MJ_WRITE = 0x00000010,
|
||||
RDPDR_IRP_MJ_FLUSH_BUFFERS = 0x00000020,
|
||||
RDPDR_IRP_MJ_SHUTDOWN = 0x00000040,
|
||||
RDPDR_IRP_MJ_DEVICE_CONTROL = 0x00000080,
|
||||
RDPDR_IRP_MJ_QUERY_VOLUME_INFORMATION = 0x00000100,
|
||||
RDPDR_IRP_MJ_SET_VOLUME_INFORMATION = 0x00000200,
|
||||
RDPDR_IRP_MJ_QUERY_INFORMATION = 0x00000400,
|
||||
RDPDR_IRP_MJ_SET_INFORMATION = 0x00000800,
|
||||
RDPDR_IRP_MJ_DIRECTORY_CONTROL = 0x00001000,
|
||||
RDPDR_IRP_MJ_LOCK_CONTROL = 0x00002000,
|
||||
RDPDR_IRP_MJ_QUERY_SECURITY = 0x00004000,
|
||||
RDPDR_IRP_MJ_SET_SECURITY = 0x00008000
|
||||
};
|
||||
|
||||
/* GENERAL_CAPS_SET.extendedPDU */
|
||||
enum RDPDR_CAPS_PDU
|
||||
{
|
||||
RDPDR_DEVICE_REMOVE_PDUS = 0x00000001,
|
||||
RDPDR_CLIENT_DISPLAY_NAME_PDU = 0x00000002,
|
||||
RDPDR_USER_LOGGEDON_PDU = 0x00000004
|
||||
};
|
||||
|
||||
/* GENERAL_CAPS_SET.extraFlags1 */
|
||||
enum RDPDR_CAPS_FLAG
|
||||
{
|
||||
ENABLE_ASYNCIO = 0x00000001
|
||||
};
|
||||
|
||||
/* DR_DRIVE_LOCK_REQ.Operation */
|
||||
enum RDP_LOWIO_OP
|
||||
{
|
||||
RDP_LOWIO_OP_SHAREDLOCK = 0x00000002,
|
||||
RDP_LOWIO_OP_EXCLUSIVELOCK = 0x00000003,
|
||||
RDP_LOWIO_OP_UNLOCK = 0x00000004,
|
||||
RDP_LOWIO_OP_UNLOCK_MULTIPLE = 0x00000005
|
||||
};
|
||||
|
||||
enum RDPDR_PRINTER_ANNOUNCE_FLAG
|
||||
{
|
||||
RDPDR_PRINTER_ANNOUNCE_FLAG_ASCII = 0x00000001,
|
||||
RDPDR_PRINTER_ANNOUNCE_FLAG_DEFAULTPRINTER = 0x00000002,
|
||||
RDPDR_PRINTER_ANNOUNCE_FLAG_NETWORKPRINTER = 0x00000004,
|
||||
RDPDR_PRINTER_ANNOUNCE_FLAG_TSPRINTER = 0x00000008,
|
||||
RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT = 0x00000010
|
||||
};
|
||||
|
||||
/* [MS-FSCC] FileAttributes */
|
||||
|
||||
/* Included with winpr/file.h */
|
||||
|
||||
/* [MS-FSCC] FSCTL Structures */
|
||||
|
||||
#if !defined(_WIN32) || (defined(_WIN32) && (_WIN32_WINNT < 0x0600))
|
||||
#define FSCTL_LMR_SET_LINK_TRACKING_INFORMATION 0x1400ec
|
||||
#define FSCTL_PIPE_PEEK 0x11400c
|
||||
#define FSCTL_PIPE_TRANSCEIVE 0x11c017
|
||||
#define FSCTL_PIPE_WAIT 0x110018
|
||||
#define FSCTL_QUERY_ON_DISK_VOLUME_INFO 0x9013c
|
||||
#define FSCTL_QUERY_SPARING_INFO 0x90138
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32
|
||||
#define FSCTL_CREATE_OR_GET_OBJECT_ID 0x900c0
|
||||
#define FSCTL_GET_REPARSE_POINT 0x900a8
|
||||
#define FSCTL_GET_RETRIEVAL_POINTERS 0x90073
|
||||
#define FSCTL_IS_PATHNAME_VALID 0x9002c
|
||||
#define FSCTL_READ_FILE_USN_DATA 0x900eb
|
||||
#define FSCTL_RECALL_FILE 0x90117
|
||||
#define FSCTL_QUERY_FAT_BPB 0x90058
|
||||
#define FSCTL_QUERY_ALLOCATED_RANGES 0x940cf
|
||||
#define FSCTL_SET_COMPRESSION 0x9c040
|
||||
#define FSCTL_SET_ENCRYPTION 0x900D7
|
||||
#define FSCTL_SET_OBJECT_ID 0x90098
|
||||
#define FSCTL_SET_OBJECT_ID_EXTENDED 0x900bc
|
||||
#define FSCTL_SET_REPARSE_POINT 0x900a4
|
||||
#define FSCTL_SET_SPARSE 0x900c4
|
||||
#define FSCTL_SET_ZERO_DATA 0x980c8
|
||||
#define FSCTL_SIS_COPYFILE 0x90100
|
||||
#define FSCTL_WRITE_USN_CLOSE_RECORD 0x900ef
|
||||
#endif
|
||||
|
||||
#if !defined(_WIN32) || (defined(_WIN32) && (_WIN32_WINNT < 0x0600))
|
||||
#define FSCTL_SET_DEFECT_MANAGEMENT 0x98134
|
||||
#define FSCTL_SET_ZERO_ON_DEALLOCATION 0x90194
|
||||
#endif
|
||||
|
||||
/* [MS-FSCC] FileFsAttributeInformation.FileSystemAttributes */
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#define FILE_SUPPORTS_USN_JOURNAL 0x02000000
|
||||
#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000
|
||||
#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000
|
||||
#define FILE_SUPPORTS_HARD_LINKS 0x00400000
|
||||
#define FILE_SUPPORTS_TRANSACTIONS 0x00200000
|
||||
#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000
|
||||
#define FILE_READ_ONLY_VOLUME 0x00080000
|
||||
#define FILE_NAMED_STREAMS 0x00040000
|
||||
#define FILE_SUPPORTS_ENCRYPTION 0x00020000
|
||||
#define FILE_SUPPORTS_OBJECT_IDS 0x00010000
|
||||
#define FILE_VOLUME_IS_COMPRESSED 0x00008000
|
||||
#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100
|
||||
#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080
|
||||
#define FILE_SUPPORTS_SPARSE_FILES 0x00000040
|
||||
#define FILE_VOLUME_QUOTAS 0x00000020
|
||||
#define FILE_FILE_COMPRESSION 0x00000010
|
||||
#define FILE_PERSISTENT_ACLS 0x00000008
|
||||
#define FILE_UNICODE_ON_DISK 0x00000004
|
||||
#define FILE_CASE_PRESERVED_NAMES 0x00000002
|
||||
#define FILE_CASE_SENSITIVE_SEARCH 0x00000001
|
||||
|
||||
#endif
|
||||
|
||||
/* [MS-FSCC] FileFsDeviceInformation.DeviceType */
|
||||
|
||||
#ifndef FILE_DEVICE_CD_ROM
|
||||
#define FILE_DEVICE_CD_ROM 0x00000002
|
||||
#endif
|
||||
|
||||
#ifndef FILE_DEVICE_DISK
|
||||
#define FILE_DEVICE_DISK 0x00000007
|
||||
#endif
|
||||
|
||||
/* [MS-FSCC] FileFsDeviceInformation.Characteristics */
|
||||
enum FILE_FS_DEVICE_FLAG
|
||||
{
|
||||
FILE_REMOVABLE_MEDIA = 0x00000001,
|
||||
FILE_READ_ONLY_DEVICE = 0x00000002,
|
||||
FILE_FLOPPY_DISKETTE = 0x00000004,
|
||||
FILE_WRITE_ONCE_MEDIA = 0x00000008,
|
||||
FILE_REMOTE_DEVICE = 0x00000010,
|
||||
FILE_DEVICE_IS_MOUNTED = 0x00000020,
|
||||
FILE_VIRTUAL_VOLUME = 0x00000040,
|
||||
FILE_DEVICE_SECURE_OPEN = 0x00000100
|
||||
};
|
||||
|
||||
#ifndef __MINGW32__
|
||||
enum FILE_FS_INFORMATION_CLASS
|
||||
{
|
||||
FileFsVolumeInformation = 1,
|
||||
FileFsLabelInformation,
|
||||
FileFsSizeInformation,
|
||||
FileFsDeviceInformation,
|
||||
FileFsAttributeInformation,
|
||||
FileFsControlInformation,
|
||||
FileFsFullSizeInformation,
|
||||
FileFsObjectIdInformation,
|
||||
FileFsDriverPathInformation,
|
||||
FileFsMaximumInformation
|
||||
};
|
||||
#endif
|
||||
|
||||
typedef struct S_DEVICE DEVICE;
|
||||
typedef struct S_IRP IRP;
|
||||
typedef struct S_DEVMAN DEVMAN;
|
||||
|
||||
typedef UINT (*pcCustomComponentRequest)(DEVICE* device, UINT16 component, UINT16 packetId,
|
||||
wStream* s);
|
||||
typedef UINT (*pcIRPRequest)(DEVICE* device, IRP* irp);
|
||||
typedef UINT (*pcInitDevice)(DEVICE* device);
|
||||
typedef UINT (*pcFreeDevice)(DEVICE* device);
|
||||
|
||||
struct S_DEVICE
|
||||
{
|
||||
UINT32 id;
|
||||
|
||||
UINT32 type;
|
||||
const char* name;
|
||||
wStream* data;
|
||||
|
||||
WINPR_ATTR_NODISCARD pcCustomComponentRequest CustomComponentRequest;
|
||||
WINPR_ATTR_NODISCARD pcIRPRequest IRPRequest;
|
||||
WINPR_ATTR_NODISCARD pcInitDevice Init;
|
||||
pcFreeDevice Free;
|
||||
};
|
||||
|
||||
typedef UINT (*pcIRPResponse)(IRP* irp);
|
||||
|
||||
struct S_IRP
|
||||
{
|
||||
WINPR_SLIST_ENTRY ItemEntry;
|
||||
|
||||
DEVICE* device;
|
||||
DEVMAN* devman;
|
||||
UINT32 FileId;
|
||||
UINT32 CompletionId;
|
||||
UINT32 MajorFunction;
|
||||
UINT32 MinorFunction;
|
||||
wStream* input;
|
||||
|
||||
NTSTATUS IoStatus;
|
||||
wStream* output;
|
||||
|
||||
WINPR_ATTR_NODISCARD pcIRPResponse Complete;
|
||||
pcIRPResponse Discard;
|
||||
|
||||
HANDLE thread;
|
||||
BOOL cancelled;
|
||||
};
|
||||
|
||||
struct S_DEVMAN
|
||||
{
|
||||
void* plugin;
|
||||
UINT32 id_sequence;
|
||||
wListDictionary* devices;
|
||||
};
|
||||
|
||||
typedef UINT (*pcRegisterDevice)(DEVMAN* devman, DEVICE* device);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEVMAN* devman;
|
||||
|
||||
WINPR_ATTR_NODISCARD pcRegisterDevice RegisterDevice;
|
||||
RDPDR_DEVICE* device;
|
||||
rdpContext* rdpcontext;
|
||||
} DEVICE_SERVICE_ENTRY_POINTS;
|
||||
typedef DEVICE_SERVICE_ENTRY_POINTS* PDEVICE_SERVICE_ENTRY_POINTS;
|
||||
|
||||
typedef UINT(VCAPITYPE* PDEVICE_SERVICE_ENTRY)(PDEVICE_SERVICE_ENTRY_POINTS);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_RDPDR_H */
|
||||
39
third_party/FreeRDP/include/freerdp/channels/rdpear.h
vendored
Normal file
39
third_party/FreeRDP/include/freerdp/channels/rdpear.h
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Authentication redirection channel
|
||||
*
|
||||
* Copyright 2023 David Fort <contact@hardening-consulting.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_RDPEAR_H
|
||||
#define FREERDP_CHANNEL_RDPEAR_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
#define RDPEAR_CHANNEL_NAME "rdpear"
|
||||
#define RDPEAR_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::AuthRedirection"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_RDPEAR_H */
|
||||
359
third_party/FreeRDP/include/freerdp/channels/rdpecam.h
vendored
Normal file
359
third_party/FreeRDP/include/freerdp/channels/rdpecam.h
vendored
Normal file
@@ -0,0 +1,359 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Video Capture Virtual Channel Extension
|
||||
*
|
||||
* Copyright 2022 Pascal Nowack <Pascal.Nowack@gmx.de>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_RDPECAM_H
|
||||
#define FREERDP_CHANNEL_RDPECAM_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define RDPECAM_CHANNEL_NAME "rdpecam"
|
||||
#define RDPECAM_DVC_CHANNEL_NAME "rdpecam"
|
||||
#define RDPECAM_CONTROL_DVC_CHANNEL_NAME "RDCamera_Device_Enumerator"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CAM_MSG_ID_Invalid = 0x00,
|
||||
CAM_MSG_ID_SuccessResponse = 0x01,
|
||||
CAM_MSG_ID_ErrorResponse = 0x02,
|
||||
CAM_MSG_ID_SelectVersionRequest = 0x03,
|
||||
CAM_MSG_ID_SelectVersionResponse = 0x04,
|
||||
CAM_MSG_ID_DeviceAddedNotification = 0x05,
|
||||
CAM_MSG_ID_DeviceRemovedNotification = 0x06,
|
||||
CAM_MSG_ID_ActivateDeviceRequest = 0x07,
|
||||
CAM_MSG_ID_DeactivateDeviceRequest = 0x08,
|
||||
CAM_MSG_ID_StreamListRequest = 0x09,
|
||||
CAM_MSG_ID_StreamListResponse = 0x0A,
|
||||
CAM_MSG_ID_MediaTypeListRequest = 0x0B,
|
||||
CAM_MSG_ID_MediaTypeListResponse = 0x0C,
|
||||
CAM_MSG_ID_CurrentMediaTypeRequest = 0x0D,
|
||||
CAM_MSG_ID_CurrentMediaTypeResponse = 0x0E,
|
||||
CAM_MSG_ID_StartStreamsRequest = 0x0F,
|
||||
CAM_MSG_ID_StopStreamsRequest = 0x10,
|
||||
CAM_MSG_ID_SampleRequest = 0x11,
|
||||
CAM_MSG_ID_SampleResponse = 0x12,
|
||||
CAM_MSG_ID_SampleErrorResponse = 0x13,
|
||||
CAM_MSG_ID_PropertyListRequest = 0x14,
|
||||
CAM_MSG_ID_PropertyListResponse = 0x15,
|
||||
CAM_MSG_ID_PropertyValueRequest = 0x16,
|
||||
CAM_MSG_ID_PropertyValueResponse = 0x17,
|
||||
CAM_MSG_ID_SetPropertyValueRequest = 0x18,
|
||||
} CAM_MSG_ID;
|
||||
|
||||
#define CAM_HEADER_SIZE 2
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BYTE Version;
|
||||
CAM_MSG_ID MessageId;
|
||||
} CAM_SHARED_MSG_HEADER;
|
||||
|
||||
/* Messages Exchanged on the Device Enumeration Channel (2.2.2) */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
} CAM_SELECT_VERSION_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
} CAM_SELECT_VERSION_RESPONSE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
WCHAR* DeviceName;
|
||||
char* VirtualChannelName;
|
||||
} CAM_DEVICE_ADDED_NOTIFICATION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
char* VirtualChannelName;
|
||||
} CAM_DEVICE_REMOVED_NOTIFICATION;
|
||||
|
||||
/* Messages Exchanged on Device Channels (2.2.3) */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
} CAM_SUCCESS_RESPONSE;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CAM_ERROR_CODE_None = 0x00000000,
|
||||
CAM_ERROR_CODE_UnexpectedError = 0x00000001,
|
||||
CAM_ERROR_CODE_InvalidMessage = 0x00000002,
|
||||
CAM_ERROR_CODE_NotInitialized = 0x00000003,
|
||||
CAM_ERROR_CODE_InvalidRequest = 0x00000004,
|
||||
CAM_ERROR_CODE_InvalidStreamNumber = 0x00000005,
|
||||
CAM_ERROR_CODE_InvalidMediaType = 0x00000006,
|
||||
CAM_ERROR_CODE_OutOfMemory = 0x00000007,
|
||||
CAM_ERROR_CODE_ItemNotFound = 0x00000008,
|
||||
CAM_ERROR_CODE_SetNotFound = 0x00000009,
|
||||
CAM_ERROR_CODE_OperationNotSupported = 0x0000000A,
|
||||
} CAM_ERROR_CODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
CAM_ERROR_CODE ErrorCode;
|
||||
} CAM_ERROR_RESPONSE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
} CAM_ACTIVATE_DEVICE_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
} CAM_DEACTIVATE_DEVICE_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
} CAM_STREAM_LIST_REQUEST;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CAM_STREAM_FRAME_SOURCE_TYPE_Color = 0x0001,
|
||||
CAM_STREAM_FRAME_SOURCE_TYPE_Infrared = 0x0002,
|
||||
CAM_STREAM_FRAME_SOURCE_TYPE_Custom = 0x0008,
|
||||
} CAM_STREAM_FRAME_SOURCE_TYPES;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CAM_STREAM_CATEGORY_Capture = 0x01,
|
||||
} CAM_STREAM_CATEGORY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_STREAM_FRAME_SOURCE_TYPES FrameSourceTypes;
|
||||
CAM_STREAM_CATEGORY StreamCategory;
|
||||
BYTE Selected;
|
||||
BYTE CanBeShared;
|
||||
} CAM_STREAM_DESCRIPTION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
BYTE N_Descriptions;
|
||||
CAM_STREAM_DESCRIPTION StreamDescriptions[255];
|
||||
} CAM_STREAM_LIST_RESPONSE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
BYTE StreamIndex;
|
||||
} CAM_MEDIA_TYPE_LIST_REQUEST;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CAM_MEDIA_FORMAT_INVALID = 0x00,
|
||||
CAM_MEDIA_FORMAT_H264 = 0x01,
|
||||
CAM_MEDIA_FORMAT_MJPG = 0x02,
|
||||
CAM_MEDIA_FORMAT_YUY2 = 0x03,
|
||||
CAM_MEDIA_FORMAT_NV12 = 0x04,
|
||||
CAM_MEDIA_FORMAT_I420 = 0x05,
|
||||
CAM_MEDIA_FORMAT_RGB24 = 0x06,
|
||||
CAM_MEDIA_FORMAT_RGB32 = 0x07,
|
||||
} CAM_MEDIA_FORMAT;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
AM_MEDIA_TYPE_DESCRIPTION_FLAG_Invalid = 0x00,
|
||||
CAM_MEDIA_TYPE_DESCRIPTION_FLAG_DecodingRequired = 0x01,
|
||||
CAM_MEDIA_TYPE_DESCRIPTION_FLAG_BottomUpImage = 0x02,
|
||||
} CAM_MEDIA_TYPE_DESCRIPTION_FLAGS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_MEDIA_FORMAT Format;
|
||||
UINT32 Width;
|
||||
UINT32 Height;
|
||||
UINT32 FrameRateNumerator;
|
||||
UINT32 FrameRateDenominator;
|
||||
UINT32 PixelAspectRatioNumerator;
|
||||
UINT32 PixelAspectRatioDenominator;
|
||||
CAM_MEDIA_TYPE_DESCRIPTION_FLAGS Flags;
|
||||
} CAM_MEDIA_TYPE_DESCRIPTION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
size_t N_Descriptions;
|
||||
CAM_MEDIA_TYPE_DESCRIPTION* MediaTypeDescriptions;
|
||||
} CAM_MEDIA_TYPE_LIST_RESPONSE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
BYTE StreamIndex;
|
||||
} CAM_CURRENT_MEDIA_TYPE_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
CAM_MEDIA_TYPE_DESCRIPTION MediaTypeDescription;
|
||||
} CAM_CURRENT_MEDIA_TYPE_RESPONSE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BYTE StreamIndex;
|
||||
CAM_MEDIA_TYPE_DESCRIPTION MediaTypeDescription;
|
||||
} CAM_START_STREAM_INFO;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
BYTE N_Infos;
|
||||
CAM_START_STREAM_INFO StartStreamsInfo[255];
|
||||
} CAM_START_STREAMS_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
} CAM_STOP_STREAMS_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
BYTE StreamIndex;
|
||||
} CAM_SAMPLE_REQUEST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
BYTE StreamIndex;
|
||||
size_t SampleSize;
|
||||
BYTE* Sample;
|
||||
} CAM_SAMPLE_RESPONSE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
BYTE StreamIndex;
|
||||
CAM_ERROR_CODE ErrorCode;
|
||||
} CAM_SAMPLE_ERROR_RESPONSE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
} CAM_PROPERTY_LIST_REQUEST;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CAM_PROPERTY_SET_CameraControl = 0x01,
|
||||
CAM_PROPERTY_SET_VideoProcAmp = 0x02
|
||||
} CAM_PROPERTY_SET;
|
||||
|
||||
/* CameraControl properties */
|
||||
typedef enum
|
||||
{
|
||||
CAM_PROPERTY_ID_CAMERA_CONTROL_Exposure = 0x01,
|
||||
CAM_PROPERTY_ID_CAMERA_CONTROL_Focus = 0x02,
|
||||
CAM_PROPERTY_ID_CAMERA_CONTROL_Pan = 0x03,
|
||||
CAM_PROPERTY_ID_CAMERA_CONTROL_Roll = 0x04,
|
||||
CAM_PROPERTY_ID_CAMERA_CONTROL_Tilt = 0x05,
|
||||
CAM_PROPERTY_ID_CAMERA_CONTROL_Zoom = 0x06
|
||||
} CAM_PROPERTY_ID;
|
||||
|
||||
/* VideoProcAmp properties */
|
||||
typedef enum
|
||||
{
|
||||
CAM_PROPERTY_ID_VIDEO_PROC_AMP_BacklightCompensation = 0x01,
|
||||
CAM_PROPERTY_ID_VIDEO_PROC_AMP_Brightness = 0x02,
|
||||
CAM_PROPERTY_ID_VIDEO_PROC_AMP_Contrast = 0x03,
|
||||
CAM_PROPERTY_ID_VIDEO_PROC_AMP_Hue = 0x04,
|
||||
CAM_PROPERTY_ID_VIDEO_PROC_AMP_WhiteBalance = 0x05
|
||||
} CAM_PROPERTY_ID_VIDEO;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CAM_PROPERTY_CAPABILITY_Manual = 0x01u,
|
||||
CAM_PROPERTY_CAPABILITY_Auto = 0x02u
|
||||
} CAM_PROPERTY_CAPABILITIES;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_PROPERTY_SET PropertySet;
|
||||
BYTE PropertyId;
|
||||
UINT32 Capabilities;
|
||||
INT32 MinValue;
|
||||
INT32 MaxValue;
|
||||
INT32 Step;
|
||||
INT32 DefaultValue;
|
||||
} CAM_PROPERTY_DESCRIPTION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
size_t N_Properties;
|
||||
CAM_PROPERTY_DESCRIPTION* Properties;
|
||||
} CAM_PROPERTY_LIST_RESPONSE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
CAM_PROPERTY_SET PropertySet;
|
||||
BYTE PropertyId;
|
||||
} CAM_PROPERTY_VALUE_REQUEST;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CAM_PROPERTY_MODE_Manual = 0x01,
|
||||
CAM_PROPERTY_MODE_Auto = 0x02,
|
||||
} CAM_PROPERTY_MODE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_PROPERTY_MODE Mode;
|
||||
INT32 Value;
|
||||
} CAM_PROPERTY_VALUE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
CAM_PROPERTY_VALUE PropertyValue;
|
||||
} CAM_PROPERTY_VALUE_RESPONSE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CAM_SHARED_MSG_HEADER Header;
|
||||
CAM_PROPERTY_SET PropertySet;
|
||||
BYTE PropertyId;
|
||||
CAM_PROPERTY_VALUE PropertyValue;
|
||||
} CAM_SET_PROPERTY_VALUE_REQUEST;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* FREERDP_CHANNEL_RDPECAM_H */
|
||||
170
third_party/FreeRDP/include/freerdp/channels/rdpei.h
vendored
Normal file
170
third_party/FreeRDP/include/freerdp/channels/rdpei.h
vendored
Normal file
@@ -0,0 +1,170 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Extended Input channel common definitions
|
||||
*
|
||||
* Copyright 2013 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
* Copyright 2014 Thincast Technologies Gmbh.
|
||||
* Copyright 2014 David FORT <contact@hardening-consulting.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_RDPEI_H
|
||||
#define FREERDP_CHANNEL_RDPEI_H
|
||||
|
||||
#include <winpr/wtypes.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#define RDPINPUT_HEADER_LENGTH 6
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define RDPEI_CHANNEL_NAME "rdpei"
|
||||
#define RDPEI_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::Input"
|
||||
|
||||
/** @brief protocol version */
|
||||
enum
|
||||
{
|
||||
RDPINPUT_PROTOCOL_V10 = 0x00010000,
|
||||
RDPINPUT_PROTOCOL_V101 = 0x00010001,
|
||||
RDPINPUT_PROTOCOL_V200 = 0x00020000,
|
||||
RDPINPUT_PROTOCOL_V300 = 0x00030000
|
||||
};
|
||||
|
||||
/* Server feature flags */
|
||||
#define SC_READY_MULTIPEN_INJECTION_SUPPORTED 0x0001
|
||||
|
||||
/* Client Ready Flags */
|
||||
#define CS_READY_FLAGS_SHOW_TOUCH_VISUALS 0x00000001
|
||||
#define CS_READY_FLAGS_DISABLE_TIMESTAMP_INJECTION 0x00000002
|
||||
#define CS_READY_FLAGS_ENABLE_MULTIPEN_INJECTION 0x00000004
|
||||
|
||||
/* 2.2.3.3.1.1 RDPINPUT_TOUCH_CONTACT */
|
||||
#define CONTACT_DATA_CONTACTRECT_PRESENT 0x0001
|
||||
#define CONTACT_DATA_ORIENTATION_PRESENT 0x0002
|
||||
#define CONTACT_DATA_PRESSURE_PRESENT 0x0004
|
||||
|
||||
typedef enum
|
||||
{
|
||||
RDPINPUT_PEN_CONTACT_PENFLAGS_PRESENT = 0x0001,
|
||||
RDPINPUT_PEN_CONTACT_PRESSURE_PRESENT = 0x0002,
|
||||
RDPINPUT_PEN_CONTACT_ROTATION_PRESENT = 0x0004,
|
||||
RDPINPUT_PEN_CONTACT_TILTX_PRESENT = 0x0008,
|
||||
RDPINPUT_PEN_CONTACT_TILTY_PRESENT = 0x0010
|
||||
} RDPINPUT_PEN_FIELDS_PRESENT;
|
||||
|
||||
/*
|
||||
* Valid combinations of RDPINPUT_CONTACT_FLAGS:
|
||||
*
|
||||
* See [MS-RDPEI] 2.2.3.3.1.1 RDPINPUT_TOUCH_CONTACT and 3.1.1.1 Touch Contact State Transitions
|
||||
*
|
||||
* UP
|
||||
* UP | CANCELED
|
||||
* UPDATE
|
||||
* UPDATE | CANCELED
|
||||
* DOWN | INRANGE | INCONTACT
|
||||
* UPDATE | INRANGE | INCONTACT
|
||||
* UP | INRANGE
|
||||
* UPDATE | INRANGE
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
RDPINPUT_CONTACT_FLAG_DOWN = 0x0001,
|
||||
RDPINPUT_CONTACT_FLAG_UPDATE = 0x0002,
|
||||
RDPINPUT_CONTACT_FLAG_UP = 0x0004,
|
||||
RDPINPUT_CONTACT_FLAG_INRANGE = 0x0008,
|
||||
RDPINPUT_CONTACT_FLAG_INCONTACT = 0x0010,
|
||||
RDPINPUT_CONTACT_FLAG_CANCELED = 0x0020
|
||||
} RDPINPUT_CONTACT_FLAGS;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
RDPINPUT_PEN_FLAG_BARREL_PRESSED = 0x0001,
|
||||
RDPINPUT_PEN_FLAG_ERASER_PRESSED = 0x0002,
|
||||
RDPINPUT_PEN_FLAG_INVERTED = 0x0004
|
||||
} RDPINPUT_PEN_FLAGS;
|
||||
|
||||
/** @brief a contact point */
|
||||
typedef struct
|
||||
{
|
||||
UINT32 contactId;
|
||||
UINT16 fieldsPresent; /* Mask of CONTACT_DATA_*_PRESENT values */
|
||||
INT32 x;
|
||||
INT32 y;
|
||||
UINT32 contactFlags; /* See RDPINPUT_CONTACT_FLAG* */
|
||||
INT16 contactRectLeft; /* Present if CONTACT_DATA_CONTACTRECT_PRESENT */
|
||||
INT16 contactRectTop; /* Present if CONTACT_DATA_CONTACTRECT_PRESENT */
|
||||
INT16 contactRectRight; /* Present if CONTACT_DATA_CONTACTRECT_PRESENT */
|
||||
INT16 contactRectBottom; /* Present if CONTACT_DATA_CONTACTRECT_PRESENT */
|
||||
UINT32 orientation; /* Present if CONTACT_DATA_ORIENTATION_PRESENT, values in degree, [0-359] */
|
||||
UINT32 pressure; /* Present if CONTACT_DATA_PRESSURE_PRESENT, normalized value [0-1024] */
|
||||
} RDPINPUT_CONTACT_DATA;
|
||||
|
||||
/** @brief a frame containing contact points */
|
||||
typedef struct
|
||||
{
|
||||
UINT16 contactCount;
|
||||
UINT64 frameOffset;
|
||||
RDPINPUT_CONTACT_DATA* contacts;
|
||||
} RDPINPUT_TOUCH_FRAME;
|
||||
|
||||
/** @brief a touch event with some frames*/
|
||||
typedef struct
|
||||
{
|
||||
UINT32 encodeTime;
|
||||
UINT16 frameCount;
|
||||
RDPINPUT_TOUCH_FRAME* frames;
|
||||
} RDPINPUT_TOUCH_EVENT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT8 deviceId;
|
||||
UINT16 fieldsPresent; /* Mask of RDPINPUT_PEN_FIELDS_PRESENT values */
|
||||
INT32 x;
|
||||
INT32 y;
|
||||
UINT32 contactFlags; /* See RDPINPUT_CONTACT_FLAG* */
|
||||
UINT32 penFlags; /* Present if RDPINPUT_PEN_CONTACT_PENFLAGS_PRESENT, values see
|
||||
RDPINPUT_PEN_FLAGS */
|
||||
UINT16 rotation; /* Present if RDPINPUT_PEN_CONTACT_ROTATION_PRESENT, In degree, [0-359] */
|
||||
UINT32
|
||||
pressure; /* Present if RDPINPUT_PEN_CONTACT_PRESSURE_PRESENT, normalized value [0-1024] */
|
||||
INT16 tiltX; /* Present if PEN_CONTACT_TILTX_PRESENT, range [-90, 90] */
|
||||
INT16 tiltY; /* Present if PEN_CONTACT_TILTY_PRESENT, range [-90, 90] */
|
||||
} RDPINPUT_PEN_CONTACT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 contactCount;
|
||||
UINT64 frameOffset;
|
||||
RDPINPUT_PEN_CONTACT* contacts;
|
||||
} RDPINPUT_PEN_FRAME;
|
||||
|
||||
/** @brief a touch event with some frames*/
|
||||
typedef struct
|
||||
{
|
||||
UINT32 encodeTime;
|
||||
UINT16 frameCount;
|
||||
RDPINPUT_PEN_FRAME* frames;
|
||||
} RDPINPUT_PEN_EVENT;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_RDPEI_H */
|
||||
154
third_party/FreeRDP/include/freerdp/channels/rdpemsc.h
vendored
Normal file
154
third_party/FreeRDP/include/freerdp/channels/rdpemsc.h
vendored
Normal file
@@ -0,0 +1,154 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Mouse Cursor Virtual Channel Extension
|
||||
*
|
||||
* Copyright 2023 Pascal Nowack <Pascal.Nowack@gmx.de>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_RDPEMSC_H
|
||||
#define FREERDP_CHANNEL_RDPEMSC_H
|
||||
|
||||
/** @defgroup channel_rdpemsc [MS-RDPEMSC]
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** \file @code [MS-RDPEMSC] @endcode Mouse Cursor Virtual Channel Extension
|
||||
* \link
|
||||
* https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpemsc/2591b507-cd5a-4537-be29-b45540543dc8
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define RDPEMSC_CHANNEL_NAME "mousecursor"
|
||||
#define RDPEMSC_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::MouseCursor"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PDUTYPE_EMSC_RESERVED = 0x00,
|
||||
PDUTYPE_CS_CAPS_ADVERTISE = 0x01,
|
||||
PDUTYPE_SC_CAPS_CONFIRM = 0x02,
|
||||
PDUTYPE_SC_MOUSEPTR_UPDATE = 0x03,
|
||||
} RDP_MOUSE_CURSOR_PDUTYPE;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TS_UPDATETYPE_MOUSEPTR_SYSTEM_NULL = 0x05,
|
||||
TS_UPDATETYPE_MOUSEPTR_SYSTEM_DEFAULT = 0x06,
|
||||
TS_UPDATETYPE_MOUSEPTR_POSITION = 0x08,
|
||||
TS_UPDATETYPE_MOUSEPTR_CACHED = 0x0A,
|
||||
TS_UPDATETYPE_MOUSEPTR_POINTER = 0x0B,
|
||||
TS_UPDATETYPE_MOUSEPTR_LARGE_POINTER = 0x0C,
|
||||
} TS_UPDATETYPE_MOUSEPTR;
|
||||
|
||||
#define RDPEMSC_HEADER_SIZE 4
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDP_MOUSE_CURSOR_PDUTYPE pduType;
|
||||
TS_UPDATETYPE_MOUSEPTR updateType;
|
||||
UINT16 reserved;
|
||||
} RDP_MOUSE_CURSOR_HEADER;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
RDP_MOUSE_CURSOR_CAPVERSION_INVALID = 0x00000000, /** @since version 3.3.0 */
|
||||
RDP_MOUSE_CURSOR_CAPVERSION_1 = 0x00000001,
|
||||
} RDP_MOUSE_CURSOR_CAPVERSION;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 signature;
|
||||
RDP_MOUSE_CURSOR_CAPVERSION version;
|
||||
UINT32 size;
|
||||
} RDP_MOUSE_CURSOR_CAPSET;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDP_MOUSE_CURSOR_CAPSET capsetHeader;
|
||||
} RDP_MOUSE_CURSOR_CAPSET_VERSION1;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDP_MOUSE_CURSOR_HEADER header;
|
||||
wArrayList* capsSets;
|
||||
} RDP_MOUSE_CURSOR_CAPS_ADVERTISE_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDP_MOUSE_CURSOR_HEADER header;
|
||||
RDP_MOUSE_CURSOR_CAPSET* capsSet;
|
||||
} RDP_MOUSE_CURSOR_CAPS_CONFIRM_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 xPos;
|
||||
UINT16 yPos;
|
||||
} TS_POINT16;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 xorBpp;
|
||||
UINT16 cacheIndex;
|
||||
TS_POINT16 hotSpot;
|
||||
UINT16 width;
|
||||
UINT16 height;
|
||||
UINT16 lengthAndMask;
|
||||
UINT16 lengthXorMask;
|
||||
BYTE* xorMaskData;
|
||||
BYTE* andMaskData;
|
||||
BYTE pad;
|
||||
} TS_POINTERATTRIBUTE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 xorBpp;
|
||||
UINT16 cacheIndex;
|
||||
TS_POINT16 hotSpot;
|
||||
UINT16 width;
|
||||
UINT16 height;
|
||||
UINT32 lengthAndMask;
|
||||
UINT32 lengthXorMask;
|
||||
BYTE* xorMaskData;
|
||||
BYTE* andMaskData;
|
||||
BYTE pad;
|
||||
} TS_LARGEPOINTERATTRIBUTE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDP_MOUSE_CURSOR_HEADER header;
|
||||
TS_POINT16* position;
|
||||
UINT16* cachedPointerIndex;
|
||||
TS_POINTERATTRIBUTE* pointerAttribute;
|
||||
TS_LARGEPOINTERATTRIBUTE* largePointerAttribute;
|
||||
} RDP_MOUSE_CURSOR_MOUSEPTR_UPDATE_PDU;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
#endif /* FREERDP_CHANNEL_RDPEMSC_H */
|
||||
43
third_party/FreeRDP/include/freerdp/channels/rdpewa.h
vendored
Normal file
43
third_party/FreeRDP/include/freerdp/channels/rdpewa.h
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Video Capture Virtual Channel Extension
|
||||
*
|
||||
* Copyright 2023 Armin Novak <anovak@thincast.com>
|
||||
* Copyright 2023 Thincast Technologies GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_RDPEWA_H
|
||||
#define FREERDP_CHANNEL_RDPEWA_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define RDPEWA_CHANNEL_NAME "rdpewa"
|
||||
#define RDPEWA_DVC_CHANNEL_NAME "rdpewa"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* FREERDP_CHANNEL_RDPEWA_H */
|
||||
413
third_party/FreeRDP/include/freerdp/channels/rdpgfx.h
vendored
Normal file
413
third_party/FreeRDP/include/freerdp/channels/rdpgfx.h
vendored
Normal file
@@ -0,0 +1,413 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Graphics Pipeline Extension
|
||||
*
|
||||
* Copyright 2013 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_RDPGFX_H
|
||||
#define FREERDP_CHANNEL_RDPGFX_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define RDPGFX_CHANNEL_NAME "rdpgfx"
|
||||
#define RDPGFX_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::Graphics"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
/**
|
||||
* Common Data Types
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 x;
|
||||
UINT16 y;
|
||||
} RDPGFX_POINT16;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BYTE B;
|
||||
BYTE G;
|
||||
BYTE R;
|
||||
BYTE XA;
|
||||
} RDPGFX_COLOR32;
|
||||
|
||||
#define GFX_PIXEL_FORMAT_XRGB_8888 0x20
|
||||
#define GFX_PIXEL_FORMAT_ARGB_8888 0x21
|
||||
|
||||
typedef BYTE RDPGFX_PIXELFORMAT;
|
||||
|
||||
#define RDPGFX_CMDID_UNUSED_0000 0x0000
|
||||
#define RDPGFX_CMDID_WIRETOSURFACE_1 0x0001
|
||||
#define RDPGFX_CMDID_WIRETOSURFACE_2 0x0002
|
||||
#define RDPGFX_CMDID_DELETEENCODINGCONTEXT 0x0003
|
||||
#define RDPGFX_CMDID_SOLIDFILL 0x0004
|
||||
#define RDPGFX_CMDID_SURFACETOSURFACE 0x0005
|
||||
#define RDPGFX_CMDID_SURFACETOCACHE 0x0006
|
||||
#define RDPGFX_CMDID_CACHETOSURFACE 0x0007
|
||||
#define RDPGFX_CMDID_EVICTCACHEENTRY 0x0008
|
||||
#define RDPGFX_CMDID_CREATESURFACE 0x0009
|
||||
#define RDPGFX_CMDID_DELETESURFACE 0x000A
|
||||
#define RDPGFX_CMDID_STARTFRAME 0x000B
|
||||
#define RDPGFX_CMDID_ENDFRAME 0x000C
|
||||
#define RDPGFX_CMDID_FRAMEACKNOWLEDGE 0x000D
|
||||
#define RDPGFX_CMDID_RESETGRAPHICS 0x000E
|
||||
#define RDPGFX_CMDID_MAPSURFACETOOUTPUT 0x000F
|
||||
#define RDPGFX_CMDID_CACHEIMPORTOFFER 0x0010
|
||||
#define RDPGFX_CMDID_CACHEIMPORTREPLY 0x0011
|
||||
#define RDPGFX_CMDID_CAPSADVERTISE 0x0012
|
||||
#define RDPGFX_CMDID_CAPSCONFIRM 0x0013
|
||||
#define RDPGFX_CMDID_UNUSED_0014 0x0014
|
||||
#define RDPGFX_CMDID_MAPSURFACETOWINDOW 0x0015
|
||||
#define RDPGFX_CMDID_QOEFRAMEACKNOWLEDGE 0x0016
|
||||
#define RDPGFX_CMDID_MAPSURFACETOSCALEDOUTPUT 0x0017
|
||||
#define RDPGFX_CMDID_MAPSURFACETOSCALEDWINDOW 0x0018
|
||||
|
||||
#define RDPGFX_HEADER_SIZE 8
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 cmdId;
|
||||
UINT16 flags;
|
||||
UINT32 pduLength;
|
||||
} RDPGFX_HEADER;
|
||||
|
||||
/**
|
||||
* Capability Sets [MS-RDPEGFX] 2.2.3
|
||||
*/
|
||||
|
||||
#define RDPGFX_CAPVERSION_8 0x00080004 /** [MS-RDPEGFX] 2.2.3.1 */
|
||||
#define RDPGFX_CAPVERSION_81 0x00080105 /** [MS-RDPEGFX] 2.2.3.2 */
|
||||
#define RDPGFX_CAPVERSION_10 0x000A0002 /** [MS-RDPEGFX] 2.2.3.3 */
|
||||
#define RDPGFX_CAPVERSION_101 0x000A0100 /** [MS-RDPEGFX] 2.2.3.4 */
|
||||
#define RDPGFX_CAPVERSION_102 0x000A0200 /** [MS-RDPEGFX] 2.2.3.5 */
|
||||
#define RDPGFX_CAPVERSION_103 0x000A0301 /** [MS-RDPEGFX] 2.2.3.6 */
|
||||
#define RDPGFX_CAPVERSION_104 0x000A0400 /** [MS-RDPEGFX] 2.2.3.7 */
|
||||
#define RDPGFX_CAPVERSION_105 0x000A0502 /** [MS-RDPEGFX] 2.2.3.8 */
|
||||
#define RDPGFX_CAPVERSION_106 \
|
||||
0x000A0600 /** [MS-RDPEGFX] 2.2.3.9 (the value in the doc is wrong, see \
|
||||
* [MS-RDPEGFX]-180912-errata] \
|
||||
* Since this is/was documented for a long time, also define \
|
||||
* the incorrect value in case some server actually uses it. \
|
||||
*/
|
||||
#define RDPGFX_CAPVERSION_106_ERR 0x000A0601
|
||||
#define RDPGFX_CAPVERSION_107 0x000A0701 /** [MS-RDPEGFX] 2.2.3.10 */
|
||||
|
||||
#define RDPGFX_NUMBER_CAPSETS 11
|
||||
#define RDPGFX_CAPSET_BASE_SIZE 8
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 version;
|
||||
UINT32 length;
|
||||
UINT32 flags;
|
||||
} RDPGFX_CAPSET;
|
||||
|
||||
#define RDPGFX_CAPS_FLAG_THINCLIENT 0x00000001U /* 8.0+ */
|
||||
#define RDPGFX_CAPS_FLAG_SMALL_CACHE 0x00000002U /* 8.0+ */
|
||||
#define RDPGFX_CAPS_FLAG_AVC420_ENABLED 0x00000010U /* 8.1+ */
|
||||
#define RDPGFX_CAPS_FLAG_AVC_DISABLED 0x00000020U /* 10.0+ */
|
||||
#define RDPGFX_CAPS_FLAG_AVC_THINCLIENT 0x00000040U /* 10.3+ */
|
||||
#define RDPGFX_CAPS_FLAG_SCALEDMAP_DISABLE 0x00000080U /* 10.7+ */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 version;
|
||||
UINT32 capsDataLength;
|
||||
UINT32 flags;
|
||||
} RDPGFX_CAPSET_VERSION8;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 version;
|
||||
UINT32 capsDataLength;
|
||||
UINT32 flags;
|
||||
} RDPGFX_CAPSET_VERSION81;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 version;
|
||||
UINT32 capsDataLength;
|
||||
UINT32 flags;
|
||||
} RDPGFX_CAPSET_VERSION10;
|
||||
|
||||
/**
|
||||
* Graphics Messages
|
||||
*/
|
||||
|
||||
#define RDPGFX_CODECID_UNCOMPRESSED 0x0000
|
||||
#define RDPGFX_CODECID_CAVIDEO 0x0003
|
||||
#define RDPGFX_CODECID_CLEARCODEC 0x0008
|
||||
#define RDPGFX_CODECID_PLANAR 0x000A
|
||||
#define RDPGFX_CODECID_AVC420 0x000B
|
||||
#define RDPGFX_CODECID_ALPHA 0x000C
|
||||
#define RDPGFX_CODECID_AVC444 0x000E
|
||||
#define RDPGFX_CODECID_AVC444v2 0x000F
|
||||
|
||||
#define RDPGFX_WIRE_TO_SURFACE_PDU_1_SIZE 17
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 surfaceId;
|
||||
UINT16 codecId;
|
||||
RDPGFX_PIXELFORMAT pixelFormat;
|
||||
RECTANGLE_16 destRect;
|
||||
UINT32 bitmapDataLength;
|
||||
BYTE* bitmapData;
|
||||
} RDPGFX_WIRE_TO_SURFACE_PDU_1;
|
||||
|
||||
#define RDPGFX_CODECID_CAPROGRESSIVE 0x0009
|
||||
#define RDPGFX_CODECID_CAPROGRESSIVE_V2 0x000D
|
||||
|
||||
#define RDPGFX_WIRE_TO_SURFACE_PDU_2_SIZE 13
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 surfaceId;
|
||||
UINT16 codecId;
|
||||
UINT32 codecContextId;
|
||||
RDPGFX_PIXELFORMAT pixelFormat;
|
||||
UINT32 bitmapDataLength;
|
||||
BYTE* bitmapData;
|
||||
} RDPGFX_WIRE_TO_SURFACE_PDU_2;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 surfaceId;
|
||||
UINT32 codecId;
|
||||
UINT32 contextId;
|
||||
UINT32 format; /* FreeRDP color format. @see freerdp/codec/color.h */
|
||||
UINT32 left;
|
||||
UINT32 top;
|
||||
UINT32 right;
|
||||
UINT32 bottom;
|
||||
UINT32 width;
|
||||
UINT32 height;
|
||||
UINT32 length;
|
||||
BYTE* data;
|
||||
void* extra;
|
||||
} RDPGFX_SURFACE_COMMAND;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 surfaceId;
|
||||
UINT32 codecContextId;
|
||||
} RDPGFX_DELETE_ENCODING_CONTEXT_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 surfaceId;
|
||||
RDPGFX_COLOR32 fillPixel;
|
||||
UINT16 fillRectCount;
|
||||
RECTANGLE_16* fillRects;
|
||||
} RDPGFX_SOLID_FILL_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 surfaceIdSrc;
|
||||
UINT16 surfaceIdDest;
|
||||
RECTANGLE_16 rectSrc;
|
||||
UINT16 destPtsCount;
|
||||
RDPGFX_POINT16* destPts;
|
||||
} RDPGFX_SURFACE_TO_SURFACE_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 surfaceId;
|
||||
UINT64 cacheKey;
|
||||
UINT16 cacheSlot;
|
||||
RECTANGLE_16 rectSrc;
|
||||
} RDPGFX_SURFACE_TO_CACHE_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 cacheSlot;
|
||||
UINT16 surfaceId;
|
||||
UINT16 destPtsCount;
|
||||
RDPGFX_POINT16* destPts;
|
||||
} RDPGFX_CACHE_TO_SURFACE_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 cacheSlot;
|
||||
} RDPGFX_EVICT_CACHE_ENTRY_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 surfaceId;
|
||||
UINT16 width;
|
||||
UINT16 height;
|
||||
RDPGFX_PIXELFORMAT pixelFormat;
|
||||
} RDPGFX_CREATE_SURFACE_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 surfaceId;
|
||||
} RDPGFX_DELETE_SURFACE_PDU;
|
||||
|
||||
#define RDPGFX_START_FRAME_PDU_SIZE 8
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 timestamp;
|
||||
UINT32 frameId;
|
||||
} RDPGFX_START_FRAME_PDU;
|
||||
|
||||
#define RDPGFX_END_FRAME_PDU_SIZE 4
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 frameId;
|
||||
} RDPGFX_END_FRAME_PDU;
|
||||
|
||||
#define QUEUE_DEPTH_UNAVAILABLE 0x00000000
|
||||
#define SUSPEND_FRAME_ACKNOWLEDGEMENT 0xFFFFFFFF
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 queueDepth;
|
||||
UINT32 frameId;
|
||||
UINT32 totalFramesDecoded;
|
||||
} RDPGFX_FRAME_ACKNOWLEDGE_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 width;
|
||||
UINT32 height;
|
||||
UINT32 monitorCount;
|
||||
MONITOR_DEF* monitorDefArray;
|
||||
} RDPGFX_RESET_GRAPHICS_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 surfaceId;
|
||||
UINT16 reserved;
|
||||
UINT32 outputOriginX;
|
||||
UINT32 outputOriginY;
|
||||
} RDPGFX_MAP_SURFACE_TO_OUTPUT_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 surfaceId;
|
||||
UINT16 reserved;
|
||||
UINT32 outputOriginX;
|
||||
UINT32 outputOriginY;
|
||||
UINT32 targetWidth;
|
||||
UINT32 targetHeight;
|
||||
} RDPGFX_MAP_SURFACE_TO_SCALED_OUTPUT_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT64 cacheKey;
|
||||
UINT32 bitmapLength;
|
||||
} RDPGFX_CACHE_ENTRY_METADATA;
|
||||
|
||||
#define RDPGFX_CACHE_ENTRY_MAX_COUNT 5462
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 cacheEntriesCount;
|
||||
RDPGFX_CACHE_ENTRY_METADATA cacheEntries[RDPGFX_CACHE_ENTRY_MAX_COUNT];
|
||||
} RDPGFX_CACHE_IMPORT_OFFER_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 importedEntriesCount;
|
||||
UINT16 cacheSlots[RDPGFX_CACHE_ENTRY_MAX_COUNT];
|
||||
} RDPGFX_CACHE_IMPORT_REPLY_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 capsSetCount;
|
||||
RDPGFX_CAPSET* capsSets;
|
||||
} RDPGFX_CAPS_ADVERTISE_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDPGFX_CAPSET* capsSet;
|
||||
} RDPGFX_CAPS_CONFIRM_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 surfaceId;
|
||||
UINT64 windowId;
|
||||
UINT32 mappedWidth;
|
||||
UINT32 mappedHeight;
|
||||
} RDPGFX_MAP_SURFACE_TO_WINDOW_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT16 surfaceId;
|
||||
UINT64 windowId;
|
||||
UINT32 mappedWidth;
|
||||
UINT32 mappedHeight;
|
||||
UINT32 targetWidth;
|
||||
UINT32 targetHeight;
|
||||
} RDPGFX_MAP_SURFACE_TO_SCALED_WINDOW_PDU;
|
||||
|
||||
/* H264 */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BYTE qpVal;
|
||||
BYTE qualityVal;
|
||||
|
||||
BYTE qp;
|
||||
BYTE r;
|
||||
BYTE p;
|
||||
} RDPGFX_H264_QUANT_QUALITY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 numRegionRects;
|
||||
RECTANGLE_16* regionRects;
|
||||
RDPGFX_H264_QUANT_QUALITY* quantQualityVals;
|
||||
} RDPGFX_H264_METABLOCK;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RDPGFX_H264_METABLOCK meta;
|
||||
UINT32 length;
|
||||
BYTE* data;
|
||||
} RDPGFX_AVC420_BITMAP_STREAM;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 cbAvc420EncodedBitstream1;
|
||||
BYTE LC;
|
||||
RDPGFX_AVC420_BITMAP_STREAM bitstream[2];
|
||||
} RDPGFX_AVC444_BITMAP_STREAM;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 frameId;
|
||||
UINT32 timestamp;
|
||||
UINT16 timeDiffSE;
|
||||
UINT16 timeDiffEDR;
|
||||
} RDPGFX_QOE_FRAME_ACKNOWLEDGE_PDU;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* FREERDP_CHANNEL_RDPGFX_H */
|
||||
32
third_party/FreeRDP/include/freerdp/channels/rdpsnd.h
vendored
Normal file
32
third_party/FreeRDP/include/freerdp/channels/rdpsnd.h
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Audio Virtual Channel Types
|
||||
*
|
||||
* Copyright 2012 Vic Lee
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_RDPSND_H
|
||||
#define FREERDP_CHANNEL_RDPSND_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
#include <freerdp/codec/audio.h>
|
||||
|
||||
#define RDPSND_CHANNEL_NAME "rdpsnd"
|
||||
#define RDPSND_DVC_CHANNEL_NAME "AUDIO_PLAYBACK_DVC"
|
||||
#define RDPSND_LOSSY_DVC_CHANNEL_NAME "AUDIO_PLAYBACK_LOSSY_DVC"
|
||||
|
||||
#endif /* FREERDP_CHANNEL_RDPSND_H */
|
||||
165
third_party/FreeRDP/include/freerdp/channels/remdesk.h
vendored
Normal file
165
third_party/FreeRDP/include/freerdp/channels/remdesk.h
vendored
Normal file
@@ -0,0 +1,165 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Remote Assistance Virtual Channel
|
||||
*
|
||||
* Copyright 2014 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_REMDESK_H
|
||||
#define FREERDP_CHANNEL_REMDESK_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define REMDESK_CHANNEL_NAME "remdesk"
|
||||
#define REMDESK_SVC_CHANNEL_NAME "remdesk"
|
||||
|
||||
#define REMDESK_ERROR_NOERROR 0
|
||||
#define REMDESK_ERROR_NOINFO 1
|
||||
#define REMDESK_ERROR_LOCALNOTERROR 3
|
||||
#define REMDESK_ERROR_REMOTEBYUSER 4
|
||||
#define REMDESK_ERROR_BYSERVER 5
|
||||
#define REMDESK_ERROR_DNSLOOKUPFAILED 6
|
||||
#define REMDESK_ERROR_OUTOFMEMORY 7
|
||||
#define REMDESK_ERROR_CONNECTIONTIMEDOUT 8
|
||||
#define REMDESK_ERROR_SOCKETCONNECTFAILED 9
|
||||
#define REMDESK_ERROR_HOSTNOTFOUND 11
|
||||
#define REMDESK_ERROR_WINSOCKSENDFAILED 12
|
||||
#define REMDESK_ERROR_INVALIDIPADDR 14
|
||||
#define REMDESK_ERROR_SOCKETRECVFAILED 15
|
||||
#define REMDESK_ERROR_INVALIDENCRYPTION 18
|
||||
#define REMDESK_ERROR_GETHOSTBYNAMEFAILED 20
|
||||
#define REMDESK_ERROR_LICENSINGFAILED 21
|
||||
#define REMDESK_ERROR_ENCRYPTIONERROR 22
|
||||
#define REMDESK_ERROR_DECRYPTIONERROR 23
|
||||
#define REMDESK_ERROR_INVALIDPARAMETERSTRING 24
|
||||
#define REMDESK_ERROR_HELPSESSIONNOTFOUND 25
|
||||
#define REMDESK_ERROR_INVALIDPASSWORD 26
|
||||
#define REMDESK_ERROR_HELPSESSIONEXPIRED 27
|
||||
#define REMDESK_ERROR_CANTOPENRESOLVER 28
|
||||
#define REMDESK_ERROR_UNKNOWNSESSMGRERROR 29
|
||||
#define REMDESK_ERROR_CANTFORMLINKTOUSERSESSION 30
|
||||
#define REMDESK_ERROR_RCPROTOCOLERROR 32
|
||||
#define REMDESK_ERROR_RCUNKNOWNERROR 33
|
||||
#define REMDESK_ERROR_INTERNALERROR 34
|
||||
#define REMDESK_ERROR_HELPEERESPONSEPENDING 35
|
||||
#define REMDESK_ERROR_HELPEESAIDYES 36
|
||||
#define REMDESK_ERROR_HELPEEALREADYBEINGHELPED 37
|
||||
#define REMDESK_ERROR_HELPEECONSIDERINGHELP 38
|
||||
#define REMDESK_ERROR_HELPEENEVERRESPONDED 40
|
||||
#define REMDESK_ERROR_HELPEESAIDNO 41
|
||||
#define REMDESK_ERROR_HELPSESSIONACCESSDENIED 42
|
||||
#define REMDESK_ERROR_USERNOTFOUND 43
|
||||
#define REMDESK_ERROR_SESSMGRERRORNOTINIT 44
|
||||
#define REMDESK_ERROR_SELFHELPNOTSUPPORTED 45
|
||||
#define REMDESK_ERROR_INCOMPATIBLEVERSION 47
|
||||
#define REMDESK_ERROR_SESSIONNOTCONNECTED 48
|
||||
#define REMDESK_ERROR_SYSTEMSHUTDOWN 50
|
||||
#define REMDESK_ERROR_STOPLISTENBYUSER 51
|
||||
#define REMDESK_ERROR_WINSOCK_FAILED 52
|
||||
#define REMDESK_ERROR_MISMATCHPARMS 53
|
||||
#define REMDESK_ERROR_PASSWORDS_DONT_MATCH 61
|
||||
#define REMDESK_ERROR_SHADOWEND_BASE 300
|
||||
#define REMDESK_ERROR_SHADOWEND_CONFIGCHANGE 301
|
||||
#define REMDESK_ERROR_SHADOWEND_UNKNOWN 302
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 DataLength;
|
||||
char ChannelName[32];
|
||||
} REMDESK_CHANNEL_HEADER;
|
||||
|
||||
#define REMDESK_CHANNEL_CTL_NAME "RC_CTL"
|
||||
#define REMDESK_CHANNEL_CTL_SIZE 22
|
||||
|
||||
typedef struct
|
||||
{
|
||||
REMDESK_CHANNEL_HEADER ch;
|
||||
|
||||
UINT32 msgType;
|
||||
} REMDESK_CTL_HEADER;
|
||||
|
||||
#define REMDESK_CTL_REMOTE_CONTROL_DESKTOP 1
|
||||
#define REMDESK_CTL_RESULT 2
|
||||
#define REMDESK_CTL_AUTHENTICATE 3
|
||||
#define REMDESK_CTL_SERVER_ANNOUNCE 4
|
||||
#define REMDESK_CTL_DISCONNECT 5
|
||||
#define REMDESK_CTL_VERSIONINFO 6
|
||||
#define REMDESK_CTL_ISCONNECTED 7
|
||||
#define REMDESK_CTL_VERIFY_PASSWORD 8
|
||||
#define REMDESK_CTL_EXPERT_ON_VISTA 9
|
||||
#define REMDESK_CTL_RANOVICE_NAME 10
|
||||
#define REMDESK_CTL_RAEXPERT_NAME 11
|
||||
#define REMDESK_CTL_TOKEN 12
|
||||
|
||||
typedef struct
|
||||
{
|
||||
REMDESK_CTL_HEADER ctlHeader;
|
||||
|
||||
UINT32 result;
|
||||
} REMDESK_CTL_RESULT_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
REMDESK_CTL_HEADER ctlHeader;
|
||||
|
||||
UINT32 versionMajor;
|
||||
UINT32 versionMinor;
|
||||
} REMDESK_CTL_VERSION_INFO_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
REMDESK_CTL_HEADER ctlHeader;
|
||||
|
||||
char* raConnectionString;
|
||||
char* expertBlob;
|
||||
} REMDESK_CTL_AUTHENTICATE_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
REMDESK_CTL_HEADER ctlHeader;
|
||||
|
||||
char* raConnectionString;
|
||||
} REMDESK_CTL_REMOTE_CONTROL_DESKTOP_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
REMDESK_CTL_HEADER ctlHeader;
|
||||
|
||||
char* expertBlob;
|
||||
} REMDESK_CTL_VERIFY_PASSWORD_PDU;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
REMDESK_CTL_HEADER ctlHeader;
|
||||
|
||||
BYTE* EncryptedPassword;
|
||||
UINT32 EncryptedPasswordLength;
|
||||
} REMDESK_CTL_EXPERT_ON_VISTA_PDU;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_REMDESK_H */
|
||||
500
third_party/FreeRDP/include/freerdp/channels/scard.h
vendored
Normal file
500
third_party/FreeRDP/include/freerdp/channels/scard.h
vendored
Normal file
@@ -0,0 +1,500 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Smartcard Redirection Virtual Channel
|
||||
*
|
||||
* Copyright 2021 Armin Novak <anovak@thincast.com>
|
||||
* Copyright 2021 Thincast Technologies GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_SCARD_H
|
||||
#define FREERDP_CHANNEL_SCARD_H
|
||||
|
||||
#include <winpr/crt.h>
|
||||
#include <winpr/smartcard.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#define RDP_SCARD_CTL_CODE(code) \
|
||||
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, (code), METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define SCARD_IOCTL_ESTABLISHCONTEXT RDP_SCARD_CTL_CODE(5) /* SCardEstablishContext */
|
||||
#define SCARD_IOCTL_RELEASECONTEXT RDP_SCARD_CTL_CODE(6) /* SCardReleaseContext */
|
||||
#define SCARD_IOCTL_ISVALIDCONTEXT RDP_SCARD_CTL_CODE(7) /* SCardIsValidContext */
|
||||
#define SCARD_IOCTL_LISTREADERGROUPSA RDP_SCARD_CTL_CODE(8) /* SCardListReaderGroupsA */
|
||||
#define SCARD_IOCTL_LISTREADERGROUPSW RDP_SCARD_CTL_CODE(9) /* SCardListReaderGroupsW */
|
||||
#define SCARD_IOCTL_LISTREADERSA RDP_SCARD_CTL_CODE(10) /* SCardListReadersA */
|
||||
#define SCARD_IOCTL_LISTREADERSW RDP_SCARD_CTL_CODE(11) /* SCardListReadersW */
|
||||
#define SCARD_IOCTL_INTRODUCEREADERGROUPA RDP_SCARD_CTL_CODE(20) /* SCardIntroduceReaderGroupA */
|
||||
#define SCARD_IOCTL_INTRODUCEREADERGROUPW RDP_SCARD_CTL_CODE(21) /* SCardIntroduceReaderGroupW */
|
||||
#define SCARD_IOCTL_FORGETREADERGROUPA RDP_SCARD_CTL_CODE(22) /* SCardForgetReaderGroupA */
|
||||
#define SCARD_IOCTL_FORGETREADERGROUPW RDP_SCARD_CTL_CODE(23) /* SCardForgetReaderGroupW */
|
||||
#define SCARD_IOCTL_INTRODUCEREADERA RDP_SCARD_CTL_CODE(24) /* SCardIntroduceReaderA */
|
||||
#define SCARD_IOCTL_INTRODUCEREADERW RDP_SCARD_CTL_CODE(25) /* SCardIntroduceReaderW */
|
||||
#define SCARD_IOCTL_FORGETREADERA RDP_SCARD_CTL_CODE(26) /* SCardForgetReaderA */
|
||||
#define SCARD_IOCTL_FORGETREADERW RDP_SCARD_CTL_CODE(27) /* SCardForgetReaderW */
|
||||
#define SCARD_IOCTL_ADDREADERTOGROUPA RDP_SCARD_CTL_CODE(28) /* SCardAddReaderToGroupA */
|
||||
#define SCARD_IOCTL_ADDREADERTOGROUPW RDP_SCARD_CTL_CODE(29) /* SCardAddReaderToGroupW */
|
||||
#define SCARD_IOCTL_REMOVEREADERFROMGROUPA \
|
||||
RDP_SCARD_CTL_CODE(30) /* SCardRemoveReaderFromGroupA \
|
||||
*/
|
||||
#define SCARD_IOCTL_REMOVEREADERFROMGROUPW \
|
||||
RDP_SCARD_CTL_CODE(31) /* SCardRemoveReaderFromGroupW \
|
||||
*/
|
||||
#define SCARD_IOCTL_LOCATECARDSA RDP_SCARD_CTL_CODE(38) /* SCardLocateCardsA */
|
||||
#define SCARD_IOCTL_LOCATECARDSW RDP_SCARD_CTL_CODE(39) /* SCardLocateCardsW */
|
||||
#define SCARD_IOCTL_GETSTATUSCHANGEA RDP_SCARD_CTL_CODE(40) /* SCardGetStatusChangeA */
|
||||
#define SCARD_IOCTL_GETSTATUSCHANGEW RDP_SCARD_CTL_CODE(41) /* SCardGetStatusChangeW */
|
||||
#define SCARD_IOCTL_CANCEL RDP_SCARD_CTL_CODE(42) /* SCardCancel */
|
||||
#define SCARD_IOCTL_CONNECTA RDP_SCARD_CTL_CODE(43) /* SCardConnectA */
|
||||
#define SCARD_IOCTL_CONNECTW RDP_SCARD_CTL_CODE(44) /* SCardConnectW */
|
||||
#define SCARD_IOCTL_RECONNECT RDP_SCARD_CTL_CODE(45) /* SCardReconnect */
|
||||
#define SCARD_IOCTL_DISCONNECT RDP_SCARD_CTL_CODE(46) /* SCardDisconnect */
|
||||
#define SCARD_IOCTL_BEGINTRANSACTION RDP_SCARD_CTL_CODE(47) /* SCardBeginTransaction */
|
||||
#define SCARD_IOCTL_ENDTRANSACTION RDP_SCARD_CTL_CODE(48) /* SCardEndTransaction */
|
||||
#define SCARD_IOCTL_STATE RDP_SCARD_CTL_CODE(49) /* SCardState */
|
||||
#define SCARD_IOCTL_STATUSA RDP_SCARD_CTL_CODE(50) /* SCardStatusA */
|
||||
#define SCARD_IOCTL_STATUSW RDP_SCARD_CTL_CODE(51) /* SCardStatusW */
|
||||
#define SCARD_IOCTL_TRANSMIT RDP_SCARD_CTL_CODE(52) /* SCardTransmit */
|
||||
#define SCARD_IOCTL_CONTROL RDP_SCARD_CTL_CODE(53) /* SCardControl */
|
||||
#define SCARD_IOCTL_GETATTRIB RDP_SCARD_CTL_CODE(54) /* SCardGetAttrib */
|
||||
#define SCARD_IOCTL_SETATTRIB RDP_SCARD_CTL_CODE(55) /* SCardSetAttrib */
|
||||
#define SCARD_IOCTL_ACCESSSTARTEDEVENT RDP_SCARD_CTL_CODE(56) /* SCardAccessStartedEvent */
|
||||
#define SCARD_IOCTL_RELEASETARTEDEVENT RDP_SCARD_CTL_CODE(57) /* SCardReleaseStartedEvent */
|
||||
#define SCARD_IOCTL_LOCATECARDSBYATRA RDP_SCARD_CTL_CODE(58) /* SCardLocateCardsByATRA */
|
||||
#define SCARD_IOCTL_LOCATECARDSBYATRW RDP_SCARD_CTL_CODE(59) /* SCardLocateCardsByATRW */
|
||||
#define SCARD_IOCTL_READCACHEA RDP_SCARD_CTL_CODE(60) /* SCardReadCacheA */
|
||||
#define SCARD_IOCTL_READCACHEW RDP_SCARD_CTL_CODE(61) /* SCardReadCacheW */
|
||||
#define SCARD_IOCTL_WRITECACHEA RDP_SCARD_CTL_CODE(62) /* SCardWriteCacheA */
|
||||
#define SCARD_IOCTL_WRITECACHEW RDP_SCARD_CTL_CODE(63) /* SCardWriteCacheW */
|
||||
#define SCARD_IOCTL_GETTRANSMITCOUNT RDP_SCARD_CTL_CODE(64) /* SCardGetTransmitCount */
|
||||
#define SCARD_IOCTL_GETREADERICON RDP_SCARD_CTL_CODE(65) /* SCardGetReaderIconA */
|
||||
#define SCARD_IOCTL_GETDEVICETYPEID RDP_SCARD_CTL_CODE(66) /* SCardGetDeviceTypeIdA */
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
/* interface type_scard_pack */
|
||||
/* [unique][version][uuid] */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* [range] */ DWORD cbContext;
|
||||
/* [size_is][unique] */ BYTE pbContext[8];
|
||||
} REDIR_SCARDCONTEXT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* [range] */ DWORD cbHandle;
|
||||
/* [size_is] */ BYTE pbHandle[8];
|
||||
} REDIR_SCARDHANDLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
} Long_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
/* [range] */ DWORD cBytes;
|
||||
/* [size_is][unique] */ BYTE* msz;
|
||||
} ListReaderGroups_Return, ListReaders_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
REDIR_SCARDCONTEXT hContext;
|
||||
} EstablishContext_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD dwCurrentState;
|
||||
DWORD dwEventState;
|
||||
/* [range] */ DWORD cbAtr;
|
||||
BYTE rgbAtr[36];
|
||||
} ReaderState_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* [range] */ DWORD cbAtr;
|
||||
BYTE rgbAtr[36];
|
||||
BYTE rgbMask[36];
|
||||
} LocateCards_ATRMask;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
/* [range] */ DWORD cReaders;
|
||||
/* [size_is] */ ReaderState_Return* rgReaderStates;
|
||||
} LocateCards_Return, GetStatusChange_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
ULONG cbDataLen;
|
||||
BYTE* pbData;
|
||||
} GetReaderIcon_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
ULONG dwDeviceId;
|
||||
} GetDeviceTypeId_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
REDIR_SCARDCONTEXT hContext;
|
||||
REDIR_SCARDHANDLE hCard;
|
||||
DWORD dwActiveProtocol;
|
||||
} Connect_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
DWORD dwActiveProtocol;
|
||||
} Reconnect_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
DWORD dwState;
|
||||
DWORD dwProtocol;
|
||||
/* [range] */ DWORD cbAtrLen;
|
||||
/* [size_is][unique] */ BYTE rgAtr[36];
|
||||
} State_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
/* [range] */ DWORD cBytes;
|
||||
/* [size_is][unique] */ BYTE* mszReaderNames;
|
||||
DWORD dwState;
|
||||
DWORD dwProtocol;
|
||||
BYTE pbAtr[32];
|
||||
/* [range] */ DWORD cbAtrLen;
|
||||
} Status_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD dwProtocol;
|
||||
/* [range] */ DWORD cbExtraBytes;
|
||||
/* [size_is][unique] */ BYTE* pbExtraBytes;
|
||||
} SCardIO_Request;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
/* [unique] */ LPSCARD_IO_REQUEST pioRecvPci;
|
||||
/* [range] */ DWORD cbRecvLength;
|
||||
/* [size_is][unique] */ BYTE* pbRecvBuffer;
|
||||
} Transmit_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
DWORD cTransmitCount;
|
||||
} GetTransmitCount_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
/* [range] */ DWORD cbOutBufferSize;
|
||||
/* [size_is][unique] */ BYTE* pvOutBuffer;
|
||||
} Control_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
/* [range] */ DWORD cbAttrLen;
|
||||
/* [size_is][unique] */ BYTE* pbAttr;
|
||||
} GetAttrib_Return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG ReturnCode;
|
||||
/* [range] */ DWORD cbDataLen;
|
||||
/* [size_is][unique] */ BYTE* pbData;
|
||||
} ReadCache_Return;
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
REDIR_SCARDCONTEXT hContext;
|
||||
REDIR_SCARDHANDLE hCard;
|
||||
} Handles_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
LONG fmszGroupsIsNULL;
|
||||
DWORD cchGroups;
|
||||
} ListReaderGroups_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
/* [range] */ DWORD cBytes;
|
||||
/* [size_is][unique] */ BYTE* mszGroups;
|
||||
LONG fmszReadersIsNULL;
|
||||
DWORD cchReaders;
|
||||
} ListReaders_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
DWORD dwTimeOut;
|
||||
/* [range] */ DWORD cReaders;
|
||||
/* [size_is] */ LPSCARD_READERSTATEA rgReaderStates;
|
||||
} GetStatusChangeA_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
/* [range] */ DWORD cBytes;
|
||||
/* [size_is] */ CHAR* mszCards;
|
||||
/* [range] */ DWORD cReaders;
|
||||
/* [size_is] */ LPSCARD_READERSTATEA rgReaderStates;
|
||||
} LocateCardsA_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
/* [range] */ DWORD cBytes;
|
||||
/* [size_is] */ WCHAR* mszCards;
|
||||
/* [range] */ DWORD cReaders;
|
||||
/* [size_is] */ LPSCARD_READERSTATEW rgReaderStates;
|
||||
} LocateCardsW_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
/* [range] */ DWORD cAtrs;
|
||||
/* [size_is] */ LocateCards_ATRMask* rgAtrMasks;
|
||||
/* [range] */ DWORD cReaders;
|
||||
/* [size_is] */ LPSCARD_READERSTATEA rgReaderStates;
|
||||
} LocateCardsByATRA_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
/* [range] */ DWORD cAtrs;
|
||||
/* [size_is] */ LocateCards_ATRMask* rgAtrMasks;
|
||||
/* [range] */ DWORD cReaders;
|
||||
/* [size_is] */ LPSCARD_READERSTATEW rgReaderStates;
|
||||
} LocateCardsByATRW_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
DWORD dwTimeOut;
|
||||
/* [range] */ DWORD cReaders;
|
||||
/* [size_is] */ LPSCARD_READERSTATEW rgReaderStates;
|
||||
} GetStatusChangeW_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
WCHAR* szReaderName;
|
||||
} GetReaderIcon_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
WCHAR* szReaderName;
|
||||
} GetDeviceTypeId_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
DWORD dwShareMode;
|
||||
DWORD dwPreferredProtocols;
|
||||
} Connect_Common_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Connect_Common_Call Common;
|
||||
/* [string] */ CHAR* szReader;
|
||||
} ConnectA_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Connect_Common_Call Common;
|
||||
/* [string] */ WCHAR* szReader;
|
||||
} ConnectW_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
DWORD dwShareMode;
|
||||
DWORD dwPreferredProtocols;
|
||||
DWORD dwInitialization;
|
||||
} Reconnect_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
DWORD dwDisposition;
|
||||
} HCardAndDisposition_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
LONG fpbAtrIsNULL;
|
||||
DWORD cbAtrLen;
|
||||
} State_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
LONG fmszReaderNamesIsNULL;
|
||||
DWORD cchReaderLen;
|
||||
DWORD cbAtrLen;
|
||||
} Status_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
LPSCARD_IO_REQUEST pioSendPci;
|
||||
/* [range] */ DWORD cbSendLength;
|
||||
/* [size_is] */ BYTE* pbSendBuffer;
|
||||
/* [unique] */ LPSCARD_IO_REQUEST pioRecvPci;
|
||||
LONG fpbRecvBufferIsNULL;
|
||||
DWORD cbRecvLength;
|
||||
} Transmit_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
LONG LongValue;
|
||||
} Long_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
} Context_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
/* [string] */ char* sz;
|
||||
} ContextAndStringA_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
/* [string] */ WCHAR* sz;
|
||||
} ContextAndStringW_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
/* [string] */ char* sz1;
|
||||
/* [string] */ char* sz2;
|
||||
} ContextAndTwoStringA_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
/* [string] */ WCHAR* sz1;
|
||||
/* [string] */ WCHAR* sz2;
|
||||
} ContextAndTwoStringW_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
DWORD dwScope;
|
||||
} EstablishContext_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
} GetTransmitCount_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
DWORD dwControlCode;
|
||||
/* [range] */ DWORD cbInBufferSize;
|
||||
/* [size_is][unique] */ BYTE* pvInBuffer;
|
||||
LONG fpvOutBufferIsNULL;
|
||||
DWORD cbOutBufferSize;
|
||||
} Control_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
DWORD dwAttrId;
|
||||
LONG fpbAttrIsNULL;
|
||||
DWORD cbAttrLen;
|
||||
} GetAttrib_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
DWORD dwAttrId;
|
||||
/* [range] */ DWORD cbAttrLen;
|
||||
/* [size_is] */ BYTE* pbAttr;
|
||||
} SetAttrib_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
UUID* CardIdentifier;
|
||||
DWORD FreshnessCounter;
|
||||
LONG fPbDataIsNULL;
|
||||
DWORD cbDataLen;
|
||||
} ReadCache_Common;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ReadCache_Common Common;
|
||||
/* [string] */ char* szLookupName;
|
||||
} ReadCacheA_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ReadCache_Common Common;
|
||||
/* [string] */ WCHAR* szLookupName;
|
||||
} ReadCacheW_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Handles_Call handles;
|
||||
UUID* CardIdentifier;
|
||||
DWORD FreshnessCounter;
|
||||
/* [range] */ DWORD cbDataLen;
|
||||
/* [size_is][unique] */ BYTE* pbData;
|
||||
} WriteCache_Common;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
WriteCache_Common Common;
|
||||
/* [string] */ char* szLookupName;
|
||||
} WriteCacheA_Call;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
WriteCache_Common Common;
|
||||
/* [string] */ WCHAR* szLookupName;
|
||||
} WriteCacheW_Call;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_SCARD_H */
|
||||
51
third_party/FreeRDP/include/freerdp/channels/telemetry.h
vendored
Normal file
51
third_party/FreeRDP/include/freerdp/channels/telemetry.h
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Telemetry Virtual Channel Extension
|
||||
*
|
||||
* Copyright 2022 Pascal Nowack <Pascal.Nowack@gmx.de>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_TELEMETRY_H
|
||||
#define FREERDP_CHANNEL_TELEMETRY_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define TELEMETRY_CHANNEL_NAME "telemetry"
|
||||
#define TELEMETRY_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::Telemetry"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT32 PromptForCredentialsMillis;
|
||||
UINT32 PromptForCredentialsDoneMillis;
|
||||
UINT32 GraphicsChannelOpenedMillis;
|
||||
UINT32 FirstGraphicsReceivedMillis;
|
||||
} TELEMETRY_RDP_TELEMETRY_PDU;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_TELEMETRY_H */
|
||||
40
third_party/FreeRDP/include/freerdp/channels/tsmf.h
vendored
Normal file
40
third_party/FreeRDP/include/freerdp/channels/tsmf.h
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Video Redirection Virtual Channel - Callback interface
|
||||
*
|
||||
* (C) Copyright 2014 Thincast Technologies GmbH
|
||||
* (C) Copyright 2014 Armin Novak <armin.novak@thincast.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/* DEPRECATION WARNING:
|
||||
*
|
||||
* This channel is unmaintained and not used since windows 7.
|
||||
* Only compile and use it if absolutely necessary, otherwise
|
||||
* deactivate it or use the newer [MS-RDPEVOR] video redirection.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_TSMF_H
|
||||
#define FREERDP_CHANNEL_TSMF_H
|
||||
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define TSMF_CHANNEL_NAME "tsmf"
|
||||
#define TSMF_DVC_CHANNEL_NAME "TSMF"
|
||||
|
||||
#endif /* FREERDP_CHANNEL_TSMF_H */
|
||||
35
third_party/FreeRDP/include/freerdp/channels/urbdrc.h
vendored
Normal file
35
third_party/FreeRDP/include/freerdp/channels/urbdrc.h
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Server USB redirection Virtual Channel
|
||||
*
|
||||
* Copyright 2019 Armin Novak <armin.novak@thincast.com>
|
||||
* Copyright 2019 Thincast Technologies GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_URBDRC_H
|
||||
#define FREERDP_CHANNEL_URBDRC_H
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/dvc.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define URBDRC_CHANNEL_NAME "urbdrc"
|
||||
#define URBDRC_DVC_CHANNEL_NAME "urbdrc"
|
||||
|
||||
#endif /* FREERDP_CHANNEL_URBDRC_H */
|
||||
126
third_party/FreeRDP/include/freerdp/channels/video.h
vendored
Normal file
126
third_party/FreeRDP/include/freerdp/channels/video.h
vendored
Normal file
@@ -0,0 +1,126 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Video Optimized Remoting Virtual Channel Extension
|
||||
*
|
||||
* Copyright 2018 David Fort <contact@hardening-consulting.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CHANNEL_VIDEO_H
|
||||
#define FREERDP_CHANNEL_VIDEO_H
|
||||
|
||||
#include <winpr/wtypes.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
/** The command line name of the channel
|
||||
*
|
||||
* \since version 3.0.0
|
||||
*/
|
||||
#define VIDEO_CHANNEL_NAME "video"
|
||||
#define VIDEO_CONTROL_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::Video::Control::v08.01"
|
||||
#define VIDEO_DATA_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::Video::Data::v08.01"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/** @brief TSNM packet type */
|
||||
enum
|
||||
{
|
||||
TSMM_PACKET_TYPE_PRESENTATION_REQUEST = 1,
|
||||
TSMM_PACKET_TYPE_PRESENTATION_RESPONSE = 2,
|
||||
TSMM_PACKET_TYPE_CLIENT_NOTIFICATION = 3,
|
||||
TSMM_PACKET_TYPE_VIDEO_DATA = 4
|
||||
};
|
||||
|
||||
/** @brief TSMM_PRESENTATION_REQUEST commands */
|
||||
enum
|
||||
{
|
||||
TSMM_START_PRESENTATION = 1,
|
||||
TSMM_STOP_PRESENTATION = 2
|
||||
};
|
||||
|
||||
/** @brief presentation request struct */
|
||||
typedef struct
|
||||
{
|
||||
BYTE PresentationId;
|
||||
BYTE Version;
|
||||
BYTE Command;
|
||||
BYTE FrameRate;
|
||||
UINT32 SourceWidth, SourceHeight;
|
||||
UINT32 ScaledWidth, ScaledHeight;
|
||||
UINT64 hnsTimestampOffset;
|
||||
UINT64 GeometryMappingId;
|
||||
BYTE VideoSubtypeId[16];
|
||||
UINT32 cbExtra;
|
||||
BYTE* pExtraData;
|
||||
} TSMM_PRESENTATION_REQUEST;
|
||||
|
||||
/** @brief response to a TSMM_PRESENTATION_REQUEST */
|
||||
typedef struct
|
||||
{
|
||||
BYTE PresentationId;
|
||||
} TSMM_PRESENTATION_RESPONSE;
|
||||
|
||||
/** @brief TSMM_VIDEO_DATA flags */
|
||||
enum
|
||||
{
|
||||
TSMM_VIDEO_DATA_FLAG_HAS_TIMESTAMPS = 0x01,
|
||||
TSMM_VIDEO_DATA_FLAG_KEYFRAME = 0x02,
|
||||
TSMM_VIDEO_DATA_FLAG_NEW_FRAMERATE = 0x04
|
||||
};
|
||||
|
||||
/** @brief a video data packet */
|
||||
typedef struct
|
||||
{
|
||||
BYTE PresentationId;
|
||||
BYTE Version;
|
||||
BYTE Flags;
|
||||
UINT64 hnsTimestamp;
|
||||
UINT64 hnsDuration;
|
||||
UINT16 CurrentPacketIndex;
|
||||
UINT16 PacketsInSample;
|
||||
UINT32 SampleNumber;
|
||||
UINT32 cbSample;
|
||||
BYTE* pSample;
|
||||
} TSMM_VIDEO_DATA;
|
||||
|
||||
/** @brief values for NotificationType in TSMM_CLIENT_NOTIFICATION */
|
||||
enum
|
||||
{
|
||||
TSMM_CLIENT_NOTIFICATION_TYPE_NETWORK_ERROR = 1,
|
||||
TSMM_CLIENT_NOTIFICATION_TYPE_FRAMERATE_OVERRIDE = 2
|
||||
};
|
||||
|
||||
/** @brief struct used when NotificationType is FRAMERATE_OVERRIDE */
|
||||
typedef struct
|
||||
{
|
||||
UINT32 Flags;
|
||||
UINT32 DesiredFrameRate;
|
||||
} TSMM_CLIENT_NOTIFICATION_FRAMERATE_OVERRIDE;
|
||||
|
||||
/** @brief a client to server notification struct */
|
||||
typedef struct
|
||||
{
|
||||
BYTE PresentationId;
|
||||
BYTE NotificationType;
|
||||
TSMM_CLIENT_NOTIFICATION_FRAMERATE_OVERRIDE FramerateOverride;
|
||||
} TSMM_CLIENT_NOTIFICATION;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_CHANNEL_VIDEO_H */
|
||||
129
third_party/FreeRDP/include/freerdp/channels/wtsvc.h
vendored
Normal file
129
third_party/FreeRDP/include/freerdp/channels/wtsvc.h
vendored
Normal file
@@ -0,0 +1,129 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Server Virtual Channel Interface
|
||||
*
|
||||
* Copyright 2011-2012 Vic Lee
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* The server-side virtual channel API follows the Microsoft Remote Desktop
|
||||
* Services API functions WTSVirtualChannel* defined in:
|
||||
* http://msdn.microsoft.com/en-us/library/windows/desktop/aa383464.aspx
|
||||
*
|
||||
* Difference between the MS API are documented in this header. All functions
|
||||
* are implemented in and integrated with libfreerdp-channels.
|
||||
*
|
||||
* Unlike MS API, all functions except WTSVirtualChannelOpenEx in this
|
||||
* implementation are thread-safe.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_WTSVC_H
|
||||
#define FREERDP_WTSVC_H
|
||||
|
||||
#include <freerdp/types.h>
|
||||
#include <freerdp/peer.h>
|
||||
|
||||
#include <winpr/winpr.h>
|
||||
#include <winpr/wtypes.h>
|
||||
#include <winpr/wtsapi.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
enum
|
||||
{
|
||||
DRDYNVC_STATE_NONE = 0,
|
||||
DRDYNVC_STATE_INITIALIZED = 1,
|
||||
DRDYNVC_STATE_READY = 2,
|
||||
DRDYNVC_STATE_FAILED = 3
|
||||
};
|
||||
|
||||
typedef BOOL (*psDVCCreationStatusCallback)(void* userdata, UINT32 channelId,
|
||||
INT32 creationStatus);
|
||||
|
||||
/**
|
||||
* WTSVirtualChannelManager functions are FreeRDP extensions to the API.
|
||||
*/
|
||||
#if defined(WITH_FREERDP_DEPRECATED)
|
||||
WINPR_DEPRECATED_VAR("Use WTSVirtualChannelManagerGetEventHandle",
|
||||
FREERDP_API void WTSVirtualChannelManagerGetFileDescriptor(
|
||||
HANDLE hServer, void** fds, int* fds_count));
|
||||
#endif
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API BOOL WTSVirtualChannelManagerOpen(HANDLE hServer);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API BOOL WTSVirtualChannelManagerCheckFileDescriptor(HANDLE hServer);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API BOOL WTSVirtualChannelManagerCheckFileDescriptorEx(HANDLE hServer, BOOL autoOpen);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API HANDLE WTSVirtualChannelManagerGetEventHandle(HANDLE hServer);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API BOOL WTSVirtualChannelManagerIsChannelJoined(HANDLE hServer, const char* name);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API BYTE WTSVirtualChannelManagerGetDrdynvcState(HANDLE hServer);
|
||||
|
||||
FREERDP_API void WTSVirtualChannelManagerSetDVCCreationCallback(HANDLE hServer,
|
||||
psDVCCreationStatusCallback cb,
|
||||
void* userdata);
|
||||
|
||||
/**
|
||||
* Extended FreeRDP WTS functions for channel handling
|
||||
*/
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API UINT16 WTSChannelGetId(freerdp_peer* client, const char* channel_name);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API BOOL WTSIsChannelJoinedByName(freerdp_peer* client, const char* channel_name);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API BOOL WTSIsChannelJoinedById(freerdp_peer* client, UINT16 channel_id);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API BOOL WTSChannelSetHandleByName(freerdp_peer* client, const char* channel_name,
|
||||
void* handle);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API BOOL WTSChannelSetHandleById(freerdp_peer* client, UINT16 channel_id, void* handle);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API void* WTSChannelGetHandleByName(freerdp_peer* client, const char* channel_name);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API void* WTSChannelGetHandleById(freerdp_peer* client, UINT16 channel_id);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API const char* WTSChannelGetName(freerdp_peer* client, UINT16 channel_id);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API char** WTSGetAcceptedChannelNames(freerdp_peer* client, size_t* count);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API INT64 WTSChannelGetOptions(freerdp_peer* client, UINT16 channel_id);
|
||||
|
||||
WINPR_ATTR_NODISCARD
|
||||
FREERDP_API UINT32 WTSChannelGetIdByHandle(HANDLE hChannelHandle);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREERDP_WTSVC_H */
|
||||
Reference in New Issue
Block a user