Blame libfreerdp/core/server.h

Packit Service fa4841
/**
Packit Service fa4841
 * FreeRDP: A Remote Desktop Protocol Implementation
Packit Service fa4841
 * Server Channels
Packit Service fa4841
 *
Packit Service fa4841
 * Copyright 2014 Marc-Andre Moreau <marcandre.moreau@gmail.com>
Packit Service fa4841
 * Copyright 2015 Copyright 2015 Thincast Technologies GmbH
Packit Service fa4841
 *
Packit Service fa4841
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit Service fa4841
 * you may not use this file except in compliance with the License.
Packit Service fa4841
 * You may obtain a copy of the License at
Packit Service fa4841
 *
Packit Service fa4841
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit Service fa4841
 *
Packit Service fa4841
 * Unless required by applicable law or agreed to in writing, software
Packit Service fa4841
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit Service fa4841
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit Service fa4841
 * See the License for the specific language governing permissions and
Packit Service fa4841
 * limitations under the License.
Packit Service fa4841
 */
Packit Service fa4841
Packit Service fa4841
#ifndef FREERDP_LIB_CORE_SERVER_H
Packit Service fa4841
#define FREERDP_LIB_CORE_SERVER_H
Packit Service fa4841
Packit Service fa4841
#include <freerdp/freerdp.h>
Packit Service fa4841
#include <freerdp/api.h>
Packit Service fa4841
#include <freerdp/channels/wtsvc.h>
Packit Service fa4841
Packit Service fa4841
#include <winpr/synch.h>
Packit Service fa4841
#include <winpr/stream.h>
Packit Service fa4841
#include <winpr/collections.h>
Packit Service fa4841
Packit Service fa4841
typedef struct rdp_peer_channel rdpPeerChannel;
Packit Service fa4841
typedef struct WTSVirtualChannelManager WTSVirtualChannelManager;
Packit Service fa4841
Packit Service fa4841
#include "rdp.h"
Packit Service fa4841
#include "mcs.h"
Packit Service fa4841
Packit Service fa4841
#define CREATE_REQUEST_PDU 0x01
Packit Service fa4841
#define DATA_FIRST_PDU 0x02
Packit Service fa4841
#define DATA_PDU 0x03
Packit Service fa4841
#define CLOSE_REQUEST_PDU 0x04
Packit Service fa4841
#define CAPABILITY_REQUEST_PDU 0x05
Packit Service fa4841
Packit Service fa4841
enum
Packit Service fa4841
{
Packit Service fa4841
	RDP_PEER_CHANNEL_TYPE_SVC = 0,
Packit Service fa4841
	RDP_PEER_CHANNEL_TYPE_DVC = 1
Packit Service fa4841
};
Packit Service fa4841
Packit Service fa4841
enum
Packit Service fa4841
{
Packit Service fa4841
	DVC_OPEN_STATE_NONE = 0,
Packit Service fa4841
	DVC_OPEN_STATE_SUCCEEDED = 1,
Packit Service fa4841
	DVC_OPEN_STATE_FAILED = 2,
Packit Service fa4841
	DVC_OPEN_STATE_CLOSED = 3
Packit Service fa4841
};
Packit Service fa4841
Packit Service fa4841
struct rdp_peer_channel
Packit Service fa4841
{
Packit Service fa4841
	WTSVirtualChannelManager* vcm;
Packit Service fa4841
	freerdp_peer* client;
Packit Service fa4841
Packit Service fa4841
	void* extra;
Packit Service fa4841
	UINT16 index;
Packit Service fa4841
	UINT32 channelId;
Packit Service fa4841
	UINT16 channelType;
Packit Service fa4841
	UINT32 channelFlags;
Packit Service fa4841
Packit Service fa4841
	wStream* receiveData;
Packit Service fa4841
	wMessageQueue* queue;
Packit Service fa4841
Packit Service fa4841
	BYTE dvc_open_state;
Packit Service fa4841
	UINT32 dvc_total_length;
Packit Service fa4841
	rdpMcsChannel* mcsChannel;
Packit Service fa4841
};
Packit Service fa4841
Packit Service fa4841
struct WTSVirtualChannelManager
Packit Service fa4841
{
Packit Service fa4841
	rdpRdp* rdp;
Packit Service fa4841
	freerdp_peer* client;
Packit Service fa4841
Packit Service fa4841
	DWORD SessionId;
Packit Service fa4841
	wMessageQueue* queue;
Packit Service fa4841
Packit Service fa4841
	rdpPeerChannel* drdynvc_channel;
Packit Service fa4841
	BYTE drdynvc_state;
Packit Service fa4841
	LONG dvc_channel_id_seq;
Packit Service fa4841
Packit Service fa4841
	wArrayList* dynamicVirtualChannels;
Packit Service fa4841
};
Packit Service fa4841
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSStartRemoteControlSessionW(LPWSTR pTargetServerName,
Packit Service fa4841
                                                                ULONG TargetLogonId, BYTE HotkeyVk,
Packit Service fa4841
                                                                USHORT HotkeyModifiers);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSStartRemoteControlSessionA(LPSTR pTargetServerName,
Packit Service fa4841
                                                                ULONG TargetLogonId, BYTE HotkeyVk,
Packit Service fa4841
                                                                USHORT HotkeyModifiers);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSStartRemoteControlSessionExW(LPWSTR pTargetServerName,
Packit Service fa4841
                                                                  ULONG TargetLogonId,
Packit Service fa4841
                                                                  BYTE HotkeyVk,
Packit Service fa4841
                                                                  USHORT HotkeyModifiers,
Packit Service fa4841
                                                                  DWORD flags);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSStartRemoteControlSessionExA(LPSTR pTargetServerName,
Packit Service fa4841
                                                                  ULONG TargetLogonId,
Packit Service fa4841
                                                                  BYTE HotkeyVk,
Packit Service fa4841
                                                                  USHORT HotkeyModifiers,
Packit Service fa4841
                                                                  DWORD flags);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSStopRemoteControlSession(ULONG LogonId);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSConnectSessionW(ULONG LogonId, ULONG TargetLogonId,
Packit Service fa4841
                                                     PWSTR pPassword, BOOL bWait);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSConnectSessionA(ULONG LogonId, ULONG TargetLogonId,
Packit Service fa4841
                                                     PSTR pPassword, BOOL bWait);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSEnumerateServersW(LPWSTR pDomainName, DWORD Reserved,
Packit Service fa4841
                                                       DWORD Version,
Packit Service fa4841
                                                       PWTS_SERVER_INFOW* ppServerInfo,
Packit Service fa4841
                                                       DWORD* pCount);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSEnumerateServersA(LPSTR pDomainName, DWORD Reserved,
Packit Service fa4841
                                                       DWORD Version,
Packit Service fa4841
                                                       PWTS_SERVER_INFOA* ppServerInfo,
Packit Service fa4841
                                                       DWORD* pCount);
Packit Service fa4841
FREERDP_LOCAL HANDLE WINAPI FreeRDP_WTSOpenServerW(LPWSTR pServerName);
Packit Service fa4841
FREERDP_LOCAL HANDLE WINAPI FreeRDP_WTSOpenServerA(LPSTR pServerName);
Packit Service fa4841
FREERDP_LOCAL HANDLE WINAPI FreeRDP_WTSOpenServerExW(LPWSTR pServerName);
Packit Service fa4841
FREERDP_LOCAL HANDLE WINAPI FreeRDP_WTSOpenServerExA(LPSTR pServerName);
Packit Service fa4841
FREERDP_LOCAL VOID WINAPI FreeRDP_WTSCloseServer(HANDLE hServer);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved,
Packit Service fa4841
                                                        DWORD Version,
Packit Service fa4841
                                                        PWTS_SESSION_INFOW* ppSessionInfo,
Packit Service fa4841
                                                        DWORD* pCount);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved,
Packit Service fa4841
                                                        DWORD Version,
Packit Service fa4841
                                                        PWTS_SESSION_INFOA* ppSessionInfo,
Packit Service fa4841
                                                        DWORD* pCount);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSEnumerateSessionsExW(HANDLE hServer, DWORD* pLevel,
Packit Service fa4841
                                                          DWORD Filter,
Packit Service fa4841
                                                          PWTS_SESSION_INFO_1W* ppSessionInfo,
Packit Service fa4841
                                                          DWORD* pCount);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSEnumerateSessionsExA(HANDLE hServer, DWORD* pLevel,
Packit Service fa4841
                                                          DWORD Filter,
Packit Service fa4841
                                                          PWTS_SESSION_INFO_1A* ppSessionInfo,
Packit Service fa4841
                                                          DWORD* pCount);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved,
Packit Service fa4841
                                                         DWORD Version,
Packit Service fa4841
                                                         PWTS_PROCESS_INFOW* ppProcessInfo,
Packit Service fa4841
                                                         DWORD* pCount);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved,
Packit Service fa4841
                                                         DWORD Version,
Packit Service fa4841
                                                         PWTS_PROCESS_INFOA* ppProcessInfo,
Packit Service fa4841
                                                         DWORD* pCount);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSTerminateProcess(HANDLE hServer, DWORD ProcessId,
Packit Service fa4841
                                                      DWORD ExitCode);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSQuerySessionInformationW(HANDLE hServer, DWORD SessionId,
Packit Service fa4841
                                                              WTS_INFO_CLASS WTSInfoClass,
Packit Service fa4841
                                                              LPWSTR* ppBuffer,
Packit Service fa4841
                                                              DWORD* pBytesReturned);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSQuerySessionInformationA(HANDLE hServer, DWORD SessionId,
Packit Service fa4841
                                                              WTS_INFO_CLASS WTSInfoClass,
Packit Service fa4841
                                                              LPSTR* ppBuffer,
Packit Service fa4841
                                                              DWORD* pBytesReturned);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSQueryUserConfigW(LPWSTR pServerName, LPWSTR pUserName,
Packit Service fa4841
                                                      WTS_CONFIG_CLASS WTSConfigClass,
Packit Service fa4841
                                                      LPWSTR* ppBuffer, DWORD* pBytesReturned);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSQueryUserConfigA(LPSTR pServerName, LPSTR pUserName,
Packit Service fa4841
                                                      WTS_CONFIG_CLASS WTSConfigClass,
Packit Service fa4841
                                                      LPSTR* ppBuffer, DWORD* pBytesReturned);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSSetUserConfigW(LPWSTR pServerName, LPWSTR pUserName,
Packit Service fa4841
                                                    WTS_CONFIG_CLASS WTSConfigClass, LPWSTR pBuffer,
Packit Service fa4841
                                                    DWORD DataLength);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSSetUserConfigA(LPSTR pServerName, LPSTR pUserName,
Packit Service fa4841
                                                    WTS_CONFIG_CLASS WTSConfigClass, LPSTR pBuffer,
Packit Service fa4841
                                                    DWORD DataLength);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSSendMessageW(HANDLE hServer, DWORD SessionId, LPWSTR pTitle,
Packit Service fa4841
                                                  DWORD TitleLength, LPWSTR pMessage,
Packit Service fa4841
                                                  DWORD MessageLength, DWORD Style, DWORD Timeout,
Packit Service fa4841
                                                  DWORD* pResponse, BOOL bWait);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSSendMessageA(HANDLE hServer, DWORD SessionId, LPSTR pTitle,
Packit Service fa4841
                                                  DWORD TitleLength, LPSTR pMessage,
Packit Service fa4841
                                                  DWORD MessageLength, DWORD Style, DWORD Timeout,
Packit Service fa4841
                                                  DWORD* pResponse, BOOL bWait);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSDisconnectSession(HANDLE hServer, DWORD SessionId, BOOL bWait);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSLogoffSession(HANDLE hServer, DWORD SessionId, BOOL bWait);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSShutdownSystem(HANDLE hServer, DWORD ShutdownFlag);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask,
Packit Service fa4841
                                                     DWORD* pEventFlags);
Packit Service fa4841
FREERDP_LOCAL HANDLE WINAPI FreeRDP_WTSVirtualChannelOpen(HANDLE hServer, DWORD SessionId,
Packit Service fa4841
                                                          LPSTR pVirtualName);
Packit Service fa4841
FREERDP_LOCAL HANDLE WINAPI FreeRDP_WTSVirtualChannelOpenEx(DWORD SessionId, LPSTR pVirtualName,
Packit Service fa4841
                                                            DWORD flags);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSVirtualChannelClose(HANDLE hChannelHandle);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSVirtualChannelRead(HANDLE hChannelHandle, ULONG TimeOut,
Packit Service fa4841
                                                        PCHAR Buffer, ULONG BufferSize,
Packit Service fa4841
                                                        PULONG pBytesRead);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSVirtualChannelWrite(HANDLE hChannelHandle, PCHAR Buffer,
Packit Service fa4841
                                                         ULONG Length, PULONG pBytesWritten);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSVirtualChannelPurgeInput(HANDLE hChannelHandle);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSVirtualChannelPurgeOutput(HANDLE hChannelHandle);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSVirtualChannelQuery(HANDLE hChannelHandle,
Packit Service fa4841
                                                         WTS_VIRTUAL_CLASS WtsVirtualClass,
Packit Service fa4841
                                                         PVOID* ppBuffer, DWORD* pBytesReturned);
Packit Service fa4841
FREERDP_LOCAL VOID WINAPI FreeRDP_WTSFreeMemory(PVOID pMemory);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSFreeMemoryExW(WTS_TYPE_CLASS WTSTypeClass, PVOID pMemory,
Packit Service fa4841
                                                   ULONG NumberOfEntries);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSFreeMemoryExA(WTS_TYPE_CLASS WTSTypeClass, PVOID pMemory,
Packit Service fa4841
                                                   ULONG NumberOfEntries);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSUnRegisterSessionNotification(HWND hWnd);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSRegisterSessionNotificationEx(HANDLE hServer, HWND hWnd,
Packit Service fa4841
                                                                   DWORD dwFlags);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSUnRegisterSessionNotificationEx(HANDLE hServer, HWND hWnd);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSQueryUserToken(ULONG SessionId, PHANDLE phToken);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSEnumerateProcessesExW(HANDLE hServer, DWORD* pLevel,
Packit Service fa4841
                                                           DWORD SessionId, LPWSTR* ppProcessInfo,
Packit Service fa4841
                                                           DWORD* pCount);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSEnumerateProcessesExA(HANDLE hServer, DWORD* pLevel,
Packit Service fa4841
                                                           DWORD SessionId, LPSTR* ppProcessInfo,
Packit Service fa4841
                                                           DWORD* pCount);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSEnumerateListenersW(HANDLE hServer, PVOID pReserved,
Packit Service fa4841
                                                         DWORD Reserved,
Packit Service fa4841
                                                         PWTSLISTENERNAMEW pListeners,
Packit Service fa4841
                                                         DWORD* pCount);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSEnumerateListenersA(HANDLE hServer, PVOID pReserved,
Packit Service fa4841
                                                         DWORD Reserved,
Packit Service fa4841
                                                         PWTSLISTENERNAMEA pListeners,
Packit Service fa4841
                                                         DWORD* pCount);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSQueryListenerConfigW(HANDLE hServer, PVOID pReserved,
Packit Service fa4841
                                                          DWORD Reserved, LPWSTR pListenerName,
Packit Service fa4841
                                                          PWTSLISTENERCONFIGW pBuffer);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSQueryListenerConfigA(HANDLE hServer, PVOID pReserved,
Packit Service fa4841
                                                          DWORD Reserved, LPSTR pListenerName,
Packit Service fa4841
                                                          PWTSLISTENERCONFIGA pBuffer);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSCreateListenerW(HANDLE hServer, PVOID pReserved,
Packit Service fa4841
                                                     DWORD Reserved, LPWSTR pListenerName,
Packit Service fa4841
                                                     PWTSLISTENERCONFIGW pBuffer, DWORD flag);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSCreateListenerA(HANDLE hServer, PVOID pReserved,
Packit Service fa4841
                                                     DWORD Reserved, LPSTR pListenerName,
Packit Service fa4841
                                                     PWTSLISTENERCONFIGA pBuffer, DWORD flag);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSSetListenerSecurityW(HANDLE hServer, PVOID pReserved,
Packit Service fa4841
                                                          DWORD Reserved, LPWSTR pListenerName,
Packit Service fa4841
                                                          SECURITY_INFORMATION SecurityInformation,
Packit Service fa4841
                                                          PSECURITY_DESCRIPTOR pSecurityDescriptor);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSSetListenerSecurityA(HANDLE hServer, PVOID pReserved,
Packit Service fa4841
                                                          DWORD Reserved, LPSTR pListenerName,
Packit Service fa4841
                                                          SECURITY_INFORMATION SecurityInformation,
Packit Service fa4841
                                                          PSECURITY_DESCRIPTOR pSecurityDescriptor);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSGetListenerSecurityW(HANDLE hServer, PVOID pReserved,
Packit Service fa4841
                                                          DWORD Reserved, LPWSTR pListenerName,
Packit Service fa4841
                                                          SECURITY_INFORMATION SecurityInformation,
Packit Service fa4841
                                                          PSECURITY_DESCRIPTOR pSecurityDescriptor,
Packit Service fa4841
                                                          DWORD nLength, LPDWORD lpnLengthNeeded);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSGetListenerSecurityA(HANDLE hServer, PVOID pReserved,
Packit Service fa4841
                                                          DWORD Reserved, LPSTR pListenerName,
Packit Service fa4841
                                                          SECURITY_INFORMATION SecurityInformation,
Packit Service fa4841
                                                          PSECURITY_DESCRIPTOR pSecurityDescriptor,
Packit Service fa4841
                                                          DWORD nLength, LPDWORD lpnLengthNeeded);
Packit Service fa4841
Packit Service fa4841
FREERDP_LOCAL BOOL CDECL FreeRDP_WTSEnableChildSessions(BOOL bEnable);
Packit Service fa4841
FREERDP_LOCAL BOOL CDECL FreeRDP_WTSIsChildSessionsEnabled(PBOOL pbEnabled);
Packit Service fa4841
FREERDP_LOCAL BOOL CDECL FreeRDP_WTSGetChildSessionId(PULONG pSessionId);
Packit Service fa4841
Packit Service fa4841
FREERDP_LOCAL DWORD WINAPI FreeRDP_WTSGetActiveConsoleSessionId(void);
Packit Service fa4841
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSLogoffUser(HANDLE hServer);
Packit Service fa4841
FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSLogonUser(HANDLE hServer, LPCSTR username, LPCSTR password,
Packit Service fa4841
                                               LPCSTR domain);
Packit Service fa4841
Packit Service fa4841
#endif /* FREERDP_LIB_CORE_SERVER_H */