mirror of
https://github.com/reactos/reactos.git
synced 2024-07-30 08:08:56 +00:00
modified rdesktop/channels.c
modified rdesktop/constants.h modified rdesktop/types.h Commented out definitions of standard Windows constants and types modified rdesktop/licence.c modified rdesktop/secure.c TODO annotations modified rdesktop/proto.h Commented out prototypes for rdpdr, rdpsnd, cliprdr, etc. functions that will be rewritten *and* use a new API modified rdesktop/rdesktop.h modified rdesktop/rdp.c modified rdesktop/tcp.c Big big mess, many temporary modifications to have a working prototype ASAP added MissTosca.sln added mstsc/mstsc.cpp added mstsc/mstsc.vcproj added mstsc/stdafx.cpp added mstsc/stdafx.h added mstscax/mstscax.cpp added mstscax/mstscax.vcproj added mstscax/stdafx.cpp added mstscax/stdafx.h Created skeleton project files for Visual C++ 2005 added rdesktop/rdesktop-core.vcproj Isolated the bare core of rdesktop. Required little to no porting added porting-tools/rdesktop-core-tester added porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp added porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj added porting-tools/rdesktop-core-tester/stdafx.cpp added porting-tools/rdesktop-core-tester/stdafx.h Tester application. The screenshots were made with this. Partial (buggy!) implementation of GUI and keyboard input svn path=/trunk/; revision=22983
This commit is contained in:
parent
aea3ddc7c8
commit
9cb9eef811
38
reactos/base/applications/tsclient/MissTosca.sln
Normal file
38
reactos/base/applications/tsclient/MissTosca.sln
Normal file
|
@ -0,0 +1,38 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual C++ Express 2005
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rdesktop-core", "rdesktop\rdesktop-core.vcproj", "{8620E9B2-9AF0-4F69-A5AF-C195D5F86372}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mstsc", "mstsc\mstsc.vcproj", "{1B415732-1F37-415F-957B-EA436301860D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mstscax", "mstscax\mstscax.vcproj", "{2C217E9E-9D77-4D6A-9259-216FD56BA56F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rdesktop-core-tester", "porting-tools\rdesktop-core-tester\rdesktop-core-tester.vcproj", "{B172A623-E2BD-4E3F-86E6-620548FE255B}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Release|Win32.Build.0 = Release|Win32
|
||||
{1B415732-1F37-415F-957B-EA436301860D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1B415732-1F37-415F-957B-EA436301860D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{1B415732-1F37-415F-957B-EA436301860D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{1B415732-1F37-415F-957B-EA436301860D}.Release|Win32.Build.0 = Release|Win32
|
||||
{2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Release|Win32.Build.0 = Release|Win32
|
||||
{B172A623-E2BD-4E3F-86E6-620548FE255B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{B172A623-E2BD-4E3F-86E6-620548FE255B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{B172A623-E2BD-4E3F-86E6-620548FE255B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B172A623-E2BD-4E3F-86E6-620548FE255B}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
7
reactos/base/applications/tsclient/mstsc/mstsc.cpp
Normal file
7
reactos/base/applications/tsclient/mstsc/mstsc.cpp
Normal file
|
@ -0,0 +1,7 @@
|
|||
#include "stdafx.h"
|
||||
|
||||
int _tmain(int argc, _TCHAR* argv[])
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
223
reactos/base/applications/tsclient/mstsc/mstsc.vcproj
Normal file
223
reactos/base/applications/tsclient/mstsc/mstsc.vcproj
Normal file
|
@ -0,0 +1,223 @@
|
|||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Name="mstsc"
|
||||
ProjectGUID="{1B415732-1F37-415F-957B-EA436301860D}"
|
||||
RootNamespace="mstsc"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="2"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="kernel32.lib $(NoInherit)"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="2"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="kernel32.lib $(NoInherit)"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\mstsc.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\stdafx.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\stdafx.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
8
reactos/base/applications/tsclient/mstsc/stdafx.cpp
Normal file
8
reactos/base/applications/tsclient/mstsc/stdafx.cpp
Normal file
|
@ -0,0 +1,8 @@
|
|||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// mstsc.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: reference any additional headers you need in STDAFX.H
|
||||
// and not in this file
|
15
reactos/base/applications/tsclient/mstsc/stdafx.h
Normal file
15
reactos/base/applications/tsclient/mstsc/stdafx.h
Normal file
|
@ -0,0 +1,15 @@
|
|||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||
#include <stdio.h>
|
||||
#include <tchar.h>
|
||||
|
||||
|
||||
|
||||
// TODO: reference additional headers your program requires here
|
7
reactos/base/applications/tsclient/mstscax/mstscax.cpp
Normal file
7
reactos/base/applications/tsclient/mstscax/mstscax.cpp
Normal file
|
@ -0,0 +1,7 @@
|
|||
#include "stdafx.h"
|
||||
|
||||
int _tmain(int argc, _TCHAR* argv[])
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
223
reactos/base/applications/tsclient/mstscax/mstscax.vcproj
Normal file
223
reactos/base/applications/tsclient/mstscax/mstscax.vcproj
Normal file
|
@ -0,0 +1,223 @@
|
|||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Name="mstscax"
|
||||
ProjectGUID="{2C217E9E-9D77-4D6A-9259-216FD56BA56F}"
|
||||
RootNamespace="mstscax"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="2"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="kernel32.lib $(NoInherit)"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="2"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="kernel32.lib $(NoInherit)"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\mstscax.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\stdafx.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\stdafx.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
8
reactos/base/applications/tsclient/mstscax/stdafx.cpp
Normal file
8
reactos/base/applications/tsclient/mstscax/stdafx.cpp
Normal file
|
@ -0,0 +1,8 @@
|
|||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// mstscax.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: reference any additional headers you need in STDAFX.H
|
||||
// and not in this file
|
15
reactos/base/applications/tsclient/mstscax/stdafx.h
Normal file
15
reactos/base/applications/tsclient/mstscax/stdafx.h
Normal file
|
@ -0,0 +1,15 @@
|
|||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||
#include <stdio.h>
|
||||
#include <tchar.h>
|
||||
|
||||
|
||||
|
||||
// TODO: reference additional headers your program requires here
|
|
@ -0,0 +1,998 @@
|
|||
#include "stdafx.h"
|
||||
|
||||
#include "rdesktop/rdesktop.h"
|
||||
#include "rdesktop/proto.h"
|
||||
|
||||
extern "C"
|
||||
{
|
||||
/* ==== BEGIN POOP ==== */
|
||||
// Temporary implementations of stuff we totally positively need to make the Real Thing happy
|
||||
/* produce a hex dump */
|
||||
void
|
||||
hexdump(unsigned char *p, unsigned int len)
|
||||
{
|
||||
unsigned char *line = p;
|
||||
int i, thisline;
|
||||
unsigned int offset = 0;
|
||||
|
||||
while (offset < len)
|
||||
{
|
||||
printf("%04x ", offset);
|
||||
thisline = len - offset;
|
||||
if (thisline > 16)
|
||||
thisline = 16;
|
||||
|
||||
for (i = 0; i < thisline; i++)
|
||||
printf("%02x ", line[i]);
|
||||
|
||||
for (; i < 16; i++)
|
||||
printf(" ");
|
||||
|
||||
for (i = 0; i < thisline; i++)
|
||||
printf("%c", (line[i] >= 0x20 && line[i] < 0x7f) ? line[i] : '.');
|
||||
|
||||
printf("\n");
|
||||
offset += thisline;
|
||||
line += thisline;
|
||||
}
|
||||
}
|
||||
|
||||
void generate_random(uint8 * random)
|
||||
{
|
||||
memcpy(random, "12345678901234567890123456789012", 32);
|
||||
}
|
||||
|
||||
/* report an error */
|
||||
void
|
||||
error(char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
fprintf(stderr, "ERROR: ");
|
||||
|
||||
va_start(ap, format);
|
||||
vfprintf(stderr, format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/* report a warning */
|
||||
void
|
||||
warning(char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
fprintf(stderr, "WARNING: ");
|
||||
|
||||
va_start(ap, format);
|
||||
vfprintf(stderr, format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/* report an unimplemented protocol feature */
|
||||
void
|
||||
unimpl(char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
fprintf(stderr, "NOT IMPLEMENTED: ");
|
||||
|
||||
va_start(ap, format);
|
||||
vfprintf(stderr, format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/* malloc; exit if out of memory */
|
||||
void *
|
||||
xmalloc(int size)
|
||||
{
|
||||
void *mem = malloc(size);
|
||||
if (mem == NULL)
|
||||
{
|
||||
error("xmalloc %d\n", size);
|
||||
exit(1);
|
||||
}
|
||||
return mem;
|
||||
}
|
||||
|
||||
/* strdup */
|
||||
char *
|
||||
xstrdup(const char *s)
|
||||
{
|
||||
char *mem = strdup(s);
|
||||
if (mem == NULL)
|
||||
{
|
||||
perror("strdup");
|
||||
exit(1);
|
||||
}
|
||||
return mem;
|
||||
}
|
||||
|
||||
/* realloc; exit if out of memory */
|
||||
void *
|
||||
xrealloc(void *oldmem, int size)
|
||||
{
|
||||
void *mem;
|
||||
|
||||
if (size < 1)
|
||||
size = 1;
|
||||
mem = realloc(oldmem, size);
|
||||
if (mem == NULL)
|
||||
{
|
||||
error("xrealloc %d\n", size);
|
||||
exit(1);
|
||||
}
|
||||
return mem;
|
||||
}
|
||||
|
||||
/* free */
|
||||
void
|
||||
xfree(void *mem)
|
||||
{
|
||||
free(mem);
|
||||
}
|
||||
|
||||
/* Create the bitmap cache directory */
|
||||
BOOL
|
||||
rd_pstcache_mkdir(void)
|
||||
{
|
||||
char *home;
|
||||
char bmpcache_dir[256];
|
||||
|
||||
home = getenv("HOME");
|
||||
|
||||
if (home == NULL)
|
||||
return False;
|
||||
|
||||
sprintf(bmpcache_dir, "%s/%s", home, ".rdesktop");
|
||||
|
||||
if ((_mkdir(bmpcache_dir) == -1) && errno != EEXIST)
|
||||
{
|
||||
perror(bmpcache_dir);
|
||||
return False;
|
||||
}
|
||||
|
||||
sprintf(bmpcache_dir, "%s/%s", home, ".rdesktop/cache");
|
||||
|
||||
if ((_mkdir(bmpcache_dir) == -1) && errno != EEXIST)
|
||||
{
|
||||
perror(bmpcache_dir);
|
||||
return False;
|
||||
}
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
/* open a file in the .rdesktop directory */
|
||||
int
|
||||
rd_open_file(char *filename)
|
||||
{
|
||||
char *home;
|
||||
char fn[256];
|
||||
int fd;
|
||||
|
||||
home = getenv("HOME");
|
||||
if (home == NULL)
|
||||
return -1;
|
||||
sprintf(fn, "%s/.rdesktop/%s", home, filename);
|
||||
fd = _open(fn, _O_RDWR | _O_CREAT, 0);
|
||||
if (fd == -1)
|
||||
perror(fn);
|
||||
return fd;
|
||||
}
|
||||
|
||||
/* close file */
|
||||
void
|
||||
rd_close_file(int fd)
|
||||
{
|
||||
_close(fd);
|
||||
}
|
||||
|
||||
/* read from file*/
|
||||
int
|
||||
rd_read_file(int fd, void *ptr, int len)
|
||||
{
|
||||
return _read(fd, ptr, len);
|
||||
}
|
||||
|
||||
/* write to file */
|
||||
int
|
||||
rd_write_file(int fd, void *ptr, int len)
|
||||
{
|
||||
return _write(fd, ptr, len);
|
||||
}
|
||||
|
||||
/* move file pointer */
|
||||
int
|
||||
rd_lseek_file(int fd, int offset)
|
||||
{
|
||||
return _lseek(fd, offset, SEEK_SET);
|
||||
}
|
||||
|
||||
/* do a write lock on a file */
|
||||
BOOL
|
||||
rd_lock_file(int fd, int start, int len)
|
||||
{
|
||||
// TODOOO...
|
||||
return False;
|
||||
}
|
||||
|
||||
int
|
||||
load_licence(RDPCLIENT * This, unsigned char **data)
|
||||
{
|
||||
char *home, *path;
|
||||
struct stat st;
|
||||
int fd, length;
|
||||
|
||||
home = getenv("HOME");
|
||||
if (home == NULL)
|
||||
return -1;
|
||||
|
||||
path = (char *) xmalloc(strlen(home) + strlen(This->hostname) + sizeof("/.rdesktop/licence."));
|
||||
sprintf(path, "%s/.rdesktop/licence.%s", home, This->hostname);
|
||||
|
||||
fd = _open(path, O_RDONLY);
|
||||
if (fd == -1)
|
||||
return -1;
|
||||
|
||||
if (fstat(fd, &st))
|
||||
return -1;
|
||||
|
||||
*data = (uint8 *) xmalloc(st.st_size);
|
||||
length = _read(fd, *data, st.st_size);
|
||||
_close(fd);
|
||||
xfree(path);
|
||||
return length;
|
||||
}
|
||||
|
||||
void
|
||||
save_licence(RDPCLIENT * This, unsigned char *data, int length)
|
||||
{
|
||||
char *home, *path, *tmppath;
|
||||
int fd;
|
||||
|
||||
home = getenv("HOME");
|
||||
if (home == NULL)
|
||||
return;
|
||||
|
||||
path = (char *) xmalloc(strlen(home) + strlen(This->hostname) + sizeof("/.rdesktop/licence."));
|
||||
|
||||
sprintf(path, "%s/.rdesktop", home);
|
||||
if ((_mkdir(path) == -1) && errno != EEXIST)
|
||||
{
|
||||
perror(path);
|
||||
return;
|
||||
}
|
||||
|
||||
/* write licence to licence.hostname.new, then atomically rename to licence.hostname */
|
||||
|
||||
sprintf(path, "%s/.rdesktop/licence.%s", home, This->hostname);
|
||||
tmppath = (char *) xmalloc(strlen(path) + sizeof(".new"));
|
||||
strcpy(tmppath, path);
|
||||
strcat(tmppath, ".new");
|
||||
|
||||
fd = _open(tmppath, O_WRONLY | O_CREAT | O_TRUNC, 0600);
|
||||
if (fd == -1)
|
||||
{
|
||||
perror(tmppath);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_write(fd, data, length) != length)
|
||||
{
|
||||
perror(tmppath);
|
||||
_unlink(tmppath);
|
||||
}
|
||||
else if (rename(tmppath, path) == -1)
|
||||
{
|
||||
perror(path);
|
||||
_unlink(tmppath);
|
||||
}
|
||||
|
||||
_close(fd);
|
||||
xfree(tmppath);
|
||||
xfree(path);
|
||||
}
|
||||
|
||||
/* ==== END POOP ==== */
|
||||
|
||||
/* ==== UI ==== */
|
||||
// Globals are totally teh evil, but cut me some slack here
|
||||
HWND hwnd;
|
||||
HBITMAP hbmBuffer;
|
||||
HDC hdcBuffer;
|
||||
|
||||
#if 0
|
||||
// NOTE: we don't really need these with rdesktop.c out of the picture
|
||||
BOOL
|
||||
ui_init(RDPCLIENT * This)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
ui_deinit(RDPCLIENT * This)
|
||||
{
|
||||
}
|
||||
|
||||
BOOL
|
||||
ui_create_window(RDPCLIENT * This)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
ui_resize_window(RDPCLIENT * This)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
#if 0
|
||||
void
|
||||
ui_destroy_window(RDPCLIENT * This)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
ui_select(RDPCLIENT * This, int rdp_socket)
|
||||
{
|
||||
return 1; // TODO: return 0 for user quit. Or just kill this silly function
|
||||
}
|
||||
|
||||
void
|
||||
ui_move_pointer(RDPCLIENT * This, int x, int y)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
HBITMAP
|
||||
ui_create_bitmap(RDPCLIENT * This, int width, int height, uint8 * data)
|
||||
{
|
||||
void * pBits;
|
||||
|
||||
BITMAPINFOHEADER bmih;
|
||||
BITMAPINFO bmi;
|
||||
|
||||
bmih.biSize = sizeof(bmih);
|
||||
bmih.biWidth = width;
|
||||
bmih.biHeight = - height;
|
||||
bmih.biPlanes = 1;
|
||||
bmih.biBitCount = This->server_depth;
|
||||
bmih.biCompression = BI_RGB;
|
||||
bmih.biSizeImage = 0;
|
||||
bmih.biXPelsPerMeter = 0;
|
||||
bmih.biYPelsPerMeter = 0;
|
||||
bmih.biClrUsed = 0;
|
||||
bmih.biClrImportant = 0;
|
||||
|
||||
bmi.bmiHeader = bmih;
|
||||
memset(bmi.bmiColors, 0, sizeof(bmi.bmiColors));
|
||||
|
||||
return CreateDIBitmap(hdcBuffer, &bmih, CBM_INIT, data, &bmi, DIB_RGB_COLORS);
|
||||
}
|
||||
|
||||
void
|
||||
ui_destroy_bitmap(RDPCLIENT * This, HBITMAP bmp)
|
||||
{
|
||||
DeleteObject(bmp);
|
||||
}
|
||||
|
||||
HGLYPH
|
||||
ui_create_glyph(RDPCLIENT * This, int width, int height, const uint8 * data)
|
||||
{
|
||||
// TODO: create 2bpp mask
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
ui_destroy_glyph(RDPCLIENT * This, HGLYPH glyph)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
HCURSOR
|
||||
ui_create_cursor(RDPCLIENT * This, unsigned int x, unsigned int y, int width, int height,
|
||||
uint8 * andmask, uint8 * xormask)
|
||||
{
|
||||
return CreateCursor(NULL, x, y, width, height, andmask, xormask);
|
||||
}
|
||||
|
||||
void
|
||||
ui_set_cursor(RDPCLIENT * This, HCURSOR cursor)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void
|
||||
ui_destroy_cursor(RDPCLIENT * This, HCURSOR cursor)
|
||||
{
|
||||
DestroyCursor(cursor);
|
||||
}
|
||||
|
||||
void
|
||||
ui_set_null_cursor(RDPCLIENT * This)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
HCOLOURMAP
|
||||
ui_create_colourmap(RDPCLIENT * This, COLOURMAP * colours)
|
||||
{
|
||||
// TODO: kill HCOLOURMAP/COLOURMAP, use HPALETTE/LOGPALETTE
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
ui_destroy_colourmap(RDPCLIENT * This, HCOLOURMAP map)
|
||||
{
|
||||
// TODO: see above
|
||||
}
|
||||
|
||||
void
|
||||
ui_set_colourmap(RDPCLIENT * This, HCOLOURMAP map)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
RECT rcClip; // TODO: initialize
|
||||
|
||||
void
|
||||
ui_set_clip(RDPCLIENT * This, int x, int y, int cx, int cy)
|
||||
{
|
||||
rcClip.left = x;
|
||||
rcClip.top = y;
|
||||
rcClip.right = x + cx - 1;
|
||||
rcClip.bottom = y + cy - 1;
|
||||
SelectObject(hdcBuffer, CreateRectRgnIndirect(&rcClip));
|
||||
}
|
||||
|
||||
void
|
||||
ui_reset_clip(RDPCLIENT * This)
|
||||
{
|
||||
rcClip.left = 0;
|
||||
rcClip.top = 0;
|
||||
rcClip.right = This->width;
|
||||
rcClip.bottom = This->height;
|
||||
SelectObject(hdcBuffer, CreateRectRgnIndirect(&rcClip));
|
||||
}
|
||||
|
||||
void
|
||||
ui_bell(RDPCLIENT * This)
|
||||
{
|
||||
MessageBeep(MB_OK); // TODO? use Beep() on remote sessions?
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
win32_repaint_rect(RDPCLIENT * This, const RECT * lprc)
|
||||
{
|
||||
RECT rcDamage;
|
||||
IntersectRect(&rcDamage, lprc, &rcClip);
|
||||
InvalidateRect(hwnd, &rcDamage, FALSE);
|
||||
//Sleep(100);
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
win32_repaint_area(RDPCLIENT * This, int x, int y, int cx, int cy)
|
||||
{
|
||||
RECT rcDamage;
|
||||
rcDamage.left = x;
|
||||
rcDamage.top = y;
|
||||
rcDamage.right = x + cx;
|
||||
rcDamage.bottom = y + cy;
|
||||
win32_repaint_rect(This, &rcDamage);
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
win32_repaint_poly(RDPCLIENT * This, POINT * point, int npoints, int linewidth)
|
||||
{
|
||||
RECT rcDamage;
|
||||
|
||||
rcDamage.left = MAXLONG;
|
||||
rcDamage.top = MAXLONG;
|
||||
rcDamage.right = 0;
|
||||
rcDamage.bottom = 0;
|
||||
|
||||
for(int i = 0; i < npoints; ++ i)
|
||||
{
|
||||
if(point[i].x < rcDamage.left)
|
||||
rcDamage.left = point[i].x;
|
||||
|
||||
if(point[i].y < rcDamage.top)
|
||||
rcDamage.top = point[i].y;
|
||||
|
||||
if(point[i].x > rcDamage.right)
|
||||
rcDamage.right = point[i].x;
|
||||
|
||||
if(point[i].y > rcDamage.bottom)
|
||||
rcDamage.bottom = point[i].y;
|
||||
}
|
||||
|
||||
InflateRect(&rcDamage, linewidth, linewidth);
|
||||
win32_repaint_rect(This, &rcDamage);
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
win32_repaint_whole(RDPCLIENT * This)
|
||||
{
|
||||
InvalidateRgn(hwnd, NULL, FALSE);
|
||||
}
|
||||
|
||||
/*
|
||||
TODO: all of the following could probably be implemented this way:
|
||||
- perform operation on off-screen buffer
|
||||
- invalidate affected region of the window
|
||||
*/
|
||||
void
|
||||
ui_paint_bitmap(RDPCLIENT * This, int x, int y, int cx, int cy, int width, int height, uint8 * data)
|
||||
{
|
||||
BITMAPINFO bmi;
|
||||
ZeroMemory(&bmi, sizeof(bmi));
|
||||
|
||||
bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);
|
||||
bmi.bmiHeader.biWidth = width;
|
||||
bmi.bmiHeader.biHeight = - height;
|
||||
bmi.bmiHeader.biPlanes = 1;
|
||||
bmi.bmiHeader.biBitCount = This->server_depth;
|
||||
|
||||
StretchDIBits(hdcBuffer, x, y, cx, cy, 0, 0, width, height, data, &bmi, DIB_RGB_COLORS, SRCCOPY);
|
||||
|
||||
win32_repaint_area(This, x, y, cx, cy);
|
||||
}
|
||||
|
||||
void
|
||||
ui_destblt(RDPCLIENT * This, uint8 opcode,
|
||||
/* dest */ int x, int y, int cx, int cy)
|
||||
{
|
||||
RECT rc;
|
||||
rc.left = x;
|
||||
rc.top = y;
|
||||
rc.right = x + cx;
|
||||
rc.bottom = y + cy;
|
||||
|
||||
int prev = SetROP2(hdcBuffer, MAKELONG(0, opcode | opcode << 4));
|
||||
|
||||
FillRect(hdcBuffer, &rc, (HBRUSH)GetStockObject(BLACK_BRUSH)); // use Rectangle instead?
|
||||
|
||||
SetROP2(hdcBuffer, prev);
|
||||
|
||||
win32_repaint_area(This, x, y, cx, cy);
|
||||
}
|
||||
|
||||
void
|
||||
ui_patblt(RDPCLIENT * This, uint8 opcode,
|
||||
/* dest */ int x, int y, int cx, int cy,
|
||||
/* brush */ BRUSH * brush, int bgcolour, int fgcolour)
|
||||
{
|
||||
// TODO
|
||||
win32_repaint_area(This, x, y, cx, cy);
|
||||
}
|
||||
|
||||
void
|
||||
ui_screenblt(RDPCLIENT * This, uint8 opcode,
|
||||
/* dest */ int x, int y, int cx, int cy,
|
||||
/* src */ int srcx, int srcy)
|
||||
{
|
||||
BitBlt(hdcBuffer, x, y, cx, cy, hdcBuffer, srcx, srcy, MAKELONG(0, opcode | opcode << 4));
|
||||
win32_repaint_area(This, x, y, cx, cy);
|
||||
}
|
||||
|
||||
void
|
||||
ui_memblt(RDPCLIENT * This, uint8 opcode,
|
||||
/* dest */ int x, int y, int cx, int cy,
|
||||
/* src */ HBITMAP src, int srcx, int srcy)
|
||||
{
|
||||
HDC hdcSrc = CreateCompatibleDC(hdcBuffer);
|
||||
HGDIOBJ hOld = SelectObject(hdcSrc, src);
|
||||
|
||||
BitBlt(hdcBuffer, x, y, cx, cy, hdcSrc, srcx, srcy, MAKELONG(0, opcode | opcode << 4));
|
||||
|
||||
DeleteObject(hOld);
|
||||
DeleteDC(hdcSrc);
|
||||
|
||||
win32_repaint_area(This, x, y, cx, cy);
|
||||
}
|
||||
|
||||
void
|
||||
ui_triblt(RDPCLIENT * This, uint8 opcode,
|
||||
/* dest */ int x, int y, int cx, int cy,
|
||||
/* src */ HBITMAP src, int srcx, int srcy,
|
||||
/* brush */ BRUSH * brush, int bgcolour, int fgcolour)
|
||||
{
|
||||
// TODO
|
||||
win32_repaint_area(This, x, y, cx, cy);
|
||||
}
|
||||
|
||||
void
|
||||
ui_line(RDPCLIENT * This, uint8 opcode,
|
||||
/* dest */ int startx, int starty, int endx, int endy,
|
||||
/* pen */ PEN * pen)
|
||||
{
|
||||
HPEN hpen = CreatePen(pen->style, pen->width, pen->colour);
|
||||
HGDIOBJ hOld = SelectObject(hdcBuffer, hpen);
|
||||
|
||||
int prevROP = SetROP2(hdcBuffer, opcode);
|
||||
|
||||
POINT prevPos;
|
||||
MoveToEx(hdcBuffer, startx, starty, &prevPos);
|
||||
|
||||
LineTo(hdcBuffer, endx, endy);
|
||||
|
||||
MoveToEx(hdcBuffer, prevPos.x, prevPos.y, NULL);
|
||||
|
||||
SetROP2(hdcBuffer, prevROP);
|
||||
|
||||
SelectObject(hdcBuffer, hOld);
|
||||
|
||||
RECT rcDamage;
|
||||
|
||||
if(startx < endx)
|
||||
{
|
||||
rcDamage.left = startx;
|
||||
rcDamage.right = endx;
|
||||
}
|
||||
else
|
||||
{
|
||||
rcDamage.left = endx;
|
||||
rcDamage.right = startx;
|
||||
}
|
||||
|
||||
if(starty < endy)
|
||||
{
|
||||
rcDamage.top = starty;
|
||||
rcDamage.bottom = endy;
|
||||
}
|
||||
else
|
||||
{
|
||||
rcDamage.top = endy;
|
||||
rcDamage.bottom = starty;
|
||||
}
|
||||
|
||||
InflateRect(&rcDamage, pen->width, pen->width);
|
||||
win32_repaint_rect(This, &rcDamage);
|
||||
}
|
||||
|
||||
void
|
||||
ui_rect(RDPCLIENT * This,
|
||||
/* dest */ int x, int y, int cx, int cy,
|
||||
/* brush */ int colour)
|
||||
{
|
||||
RECT rc;
|
||||
rc.left = x;
|
||||
rc.top = y;
|
||||
rc.right = x + cx;
|
||||
rc.bottom = y + cy;
|
||||
|
||||
HBRUSH hbr = CreateSolidBrush(colour);
|
||||
FillRect(hdcBuffer, &rc, hbr); // use Rectangle instead?
|
||||
DeleteObject(hbr);
|
||||
|
||||
win32_repaint_rect(This, &rc);
|
||||
}
|
||||
|
||||
void
|
||||
ui_polygon(RDPCLIENT * This, uint8 opcode,
|
||||
/* mode */ uint8 fillmode,
|
||||
/* dest */ POINT * point, int npoints,
|
||||
/* brush */ BRUSH * brush, int bgcolour, int fgcolour)
|
||||
{
|
||||
// TODO: create brush, set fg&bg
|
||||
|
||||
int oldRop = SetROP2(hdcBuffer, opcode);
|
||||
int oldFillMode = SetPolyFillMode(hdcBuffer, fillmode);
|
||||
Polygon(hdcBuffer, point, npoints);
|
||||
SetPolyFillMode(hdcBuffer, oldFillMode);
|
||||
SetROP2(hdcBuffer, oldRop);
|
||||
|
||||
win32_repaint_poly(This, point, npoints, 0);
|
||||
}
|
||||
|
||||
void
|
||||
ui_polyline(RDPCLIENT * This, uint8 opcode,
|
||||
/* dest */ POINT * points, int npoints,
|
||||
/* pen */ PEN * pen)
|
||||
{
|
||||
HPEN hpen = CreatePen(pen->style, pen->width, pen->colour);
|
||||
HGDIOBJ hOld = SelectObject(hdcBuffer, hpen);
|
||||
int oldRop = SetROP2(hdcBuffer, opcode);
|
||||
Polyline(hdcBuffer, points, npoints);
|
||||
SetROP2(hdcBuffer, oldRop);
|
||||
SelectObject(hdcBuffer, hOld);
|
||||
|
||||
win32_repaint_poly(This, points, npoints, pen->width);
|
||||
}
|
||||
|
||||
void
|
||||
ui_ellipse(RDPCLIENT * This, uint8 opcode,
|
||||
/* mode */ uint8 fillmode,
|
||||
/* dest */ int x, int y, int cx, int cy,
|
||||
/* brush */ BRUSH * brush, int bgcolour, int fgcolour)
|
||||
{
|
||||
#if 0
|
||||
switch(fillmode)
|
||||
{
|
||||
case 0: // outline // HOW? HOW? WITH WHAT PEN?
|
||||
case 1: // filled // TODO
|
||||
}
|
||||
#endif
|
||||
win32_repaint_area(This, x, y, cx, cy);
|
||||
}
|
||||
|
||||
void
|
||||
ui_draw_glyph(RDPCLIENT * This, int mixmode,
|
||||
/* dest */ int x, int y, int cx, int cy,
|
||||
/* src */ HGLYPH glyph, int srcx, int srcy,
|
||||
int bgcolour, int fgcolour)
|
||||
{
|
||||
// TODO!!!
|
||||
}
|
||||
|
||||
void
|
||||
ui_draw_text(RDPCLIENT * This, uint8 font, uint8 flags, uint8 opcode, int mixmode, int x, int y,
|
||||
int clipx, int clipy, int clipcx, int clipcy,
|
||||
int boxx, int boxy, int boxcx, int boxcy, BRUSH * brush,
|
||||
int bgcolour, int fgcolour, uint8 * text, uint8 length)
|
||||
{
|
||||
// TODO!!!
|
||||
}
|
||||
|
||||
void
|
||||
ui_desktop_save(RDPCLIENT * This, uint32 offset, int x, int y, int cx, int cy)
|
||||
{
|
||||
// TODO (use GetDIBits)
|
||||
}
|
||||
|
||||
void
|
||||
ui_desktop_restore(RDPCLIENT * This, uint32 offset, int x, int y, int cx, int cy)
|
||||
{
|
||||
// TODO (use SetDIBitsToDevice)
|
||||
win32_repaint_whole(This);
|
||||
}
|
||||
|
||||
void
|
||||
ui_begin_update(RDPCLIENT * This)
|
||||
{
|
||||
// TODO? use a mutex to arbitrate access to the off-screen buffer?
|
||||
}
|
||||
|
||||
void
|
||||
ui_end_update(RDPCLIENT * This)
|
||||
{
|
||||
// TODO? use a mutex to arbitrate access to the off-screen buffer?
|
||||
}
|
||||
};
|
||||
|
||||
static
|
||||
LRESULT
|
||||
CALLBACK
|
||||
mstsc_WndProc
|
||||
(
|
||||
HWND hwnd,
|
||||
UINT uMsg,
|
||||
WPARAM wparam,
|
||||
LPARAM lparam
|
||||
)
|
||||
{
|
||||
// BUGBUG: LongToPtr & PtrToLong will break on Win64
|
||||
|
||||
RDPCLIENT * This = reinterpret_cast<RDPCLIENT *>(LongToPtr(GetWindowLongPtr(hwnd, GWLP_USERDATA)));
|
||||
|
||||
switch(uMsg)
|
||||
{
|
||||
case WM_CREATE:
|
||||
This = static_cast<RDPCLIENT *>(reinterpret_cast<LPCREATESTRUCT>(lparam)->lpCreateParams);
|
||||
SetWindowLongPtr(hwnd, GWLP_USERDATA, PtrToLong(This));
|
||||
break;
|
||||
|
||||
case WM_PAINT:
|
||||
// Obscenely simple code for now...
|
||||
{
|
||||
PAINTSTRUCT ps;
|
||||
HDC hdc = BeginPaint(hwnd, &ps);
|
||||
|
||||
BitBlt
|
||||
(
|
||||
hdc,
|
||||
ps.rcPaint.left,
|
||||
ps.rcPaint.top,
|
||||
ps.rcPaint.right - ps.rcPaint.left,
|
||||
ps.rcPaint.bottom - ps.rcPaint.top,
|
||||
hdcBuffer,
|
||||
ps.rcPaint.left,
|
||||
ps.rcPaint.top,
|
||||
SRCCOPY
|
||||
);
|
||||
|
||||
EndPaint(hwnd, &ps);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case WM_SYSKEYDOWN:
|
||||
case WM_KEYDOWN:
|
||||
rdp_send_input
|
||||
(
|
||||
This,
|
||||
GetMessageTime(),
|
||||
RDP_INPUT_SCANCODE,
|
||||
RDP_KEYPRESS | (lparam & 0x1000000 ? KBD_FLAG_EXT : 0),
|
||||
LOBYTE(HIWORD(lparam)),
|
||||
0
|
||||
);
|
||||
|
||||
break;
|
||||
|
||||
case WM_SYSKEYUP:
|
||||
case WM_KEYUP:
|
||||
rdp_send_input
|
||||
(
|
||||
This,
|
||||
GetMessageTime(),
|
||||
RDP_INPUT_SCANCODE,
|
||||
RDP_KEYRELEASE | (lparam & 0x1000000 ? KBD_FLAG_EXT : 0),
|
||||
LOBYTE(HIWORD(lparam)),
|
||||
0
|
||||
);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return DefWindowProc(hwnd, uMsg, wparam, lparam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static
|
||||
DWORD
|
||||
WINAPI
|
||||
mstsc_ProtocolIOThread
|
||||
(
|
||||
LPVOID lpArgument
|
||||
)
|
||||
{
|
||||
RDPCLIENT * This = static_cast<RDPCLIENT *>(lpArgument);
|
||||
|
||||
strcpy(This->username, "Hyperion");
|
||||
|
||||
DWORD dw = sizeof(This->hostname);
|
||||
GetComputerNameA(This->hostname, &dw);
|
||||
|
||||
uint32 flags = RDP_LOGON_NORMAL | RDP_LOGON_COMPRESSION | RDP_LOGON_COMPRESSION2;
|
||||
|
||||
rdp_connect(This, "10.0.0.3", flags, "", "", "", "");
|
||||
|
||||
hdcBuffer = CreateCompatibleDC(NULL);
|
||||
|
||||
BITMAPINFO bmi;
|
||||
bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);
|
||||
bmi.bmiHeader.biWidth = This->width;
|
||||
bmi.bmiHeader.biHeight = This->height;
|
||||
bmi.bmiHeader.biPlanes = 1;
|
||||
bmi.bmiHeader.biBitCount = This->server_depth;
|
||||
bmi.bmiHeader.biCompression = BI_RGB;
|
||||
bmi.bmiHeader.biSizeImage = 0;
|
||||
bmi.bmiHeader.biXPelsPerMeter = 0;
|
||||
bmi.bmiHeader.biYPelsPerMeter = 0;
|
||||
bmi.bmiHeader.biClrUsed = 0; // TODO! palette displays
|
||||
bmi.bmiHeader.biClrImportant = 0; // TODO! palette displays
|
||||
|
||||
void * p;
|
||||
|
||||
hbmBuffer = CreateDIBSection(hdcBuffer, &bmi, DIB_RGB_COLORS, &p, NULL, 0);
|
||||
|
||||
SelectObject(hdcBuffer, hbmBuffer);
|
||||
|
||||
rcClip.left = 0;
|
||||
rcClip.top = 0;
|
||||
rcClip.right = This->width;
|
||||
rcClip.bottom = This->height;
|
||||
|
||||
BOOL deactivated;
|
||||
uint32 ext_disc_reason;
|
||||
|
||||
rdp_main_loop(This, &deactivated, &ext_disc_reason);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int wmain()
|
||||
{
|
||||
WSADATA wsd;
|
||||
WSAStartup(MAKEWORD(2, 2), &wsd);
|
||||
|
||||
static RDPCLIENT This_; // NOTE: this is HUGE and would overflow the stack!
|
||||
ZeroMemory(&This_, sizeof(This_));
|
||||
|
||||
RDPCLIENT * This = &This_;
|
||||
|
||||
/*
|
||||
Threading model for MissTosca:
|
||||
- main thread is the GUI thread. Message loop maintained by caller
|
||||
- protocol I/O is handled in an I/O thread (or thread pool)
|
||||
- extra threads maintained by virtual channel handlers. Virtual channel writes are thread-neutral
|
||||
|
||||
How we handle drawing: at the moment just an off-screen buffer we dump on-screen when asked to.
|
||||
Still considering how to draw on-screen directly and *then* buffering off-screen (for example,
|
||||
when running inside another remote session)
|
||||
*/
|
||||
|
||||
// FIXME: keyboard mess
|
||||
This->keylayout = 0x409;
|
||||
This->keyboard_type = 0x4;
|
||||
This->keyboard_subtype = 0x0;
|
||||
This->keyboard_functionkeys = 0xc;
|
||||
This->width = 1024;
|
||||
This->height = 768;
|
||||
This->server_depth = 24;
|
||||
This->bitmap_compression = True;
|
||||
This->sendmotion = True;
|
||||
This->bitmap_cache = True;
|
||||
This->bitmap_cache_persist_enable = False;
|
||||
This->bitmap_cache_precache = True;
|
||||
This->encryption = True;
|
||||
This->packet_encryption = True;
|
||||
This->desktop_save = True;
|
||||
This->polygon_ellipse_orders = True;
|
||||
This->fullscreen = False;
|
||||
This->grab_keyboard = True;
|
||||
This->hide_decorations = False;
|
||||
This->use_rdp5 = True;
|
||||
This->rdpclip = True;
|
||||
This->console_session = False;
|
||||
This->numlock_sync = False;
|
||||
This->seamless_rdp = False;
|
||||
This->rdp5_performanceflags = RDP5_NO_WALLPAPER | RDP5_NO_FULLWINDOWDRAG | RDP5_NO_MENUANIMATIONS;
|
||||
This->tcp_port_rdp = TCP_PORT_RDP;
|
||||
|
||||
#define NOT_SET -1
|
||||
This->cache.bmpcache_lru[0] = NOT_SET;
|
||||
This->cache.bmpcache_lru[1] = NOT_SET;
|
||||
This->cache.bmpcache_lru[2] = NOT_SET;
|
||||
This->cache.bmpcache_mru[0] = NOT_SET;
|
||||
This->cache.bmpcache_mru[1] = NOT_SET;
|
||||
This->cache.bmpcache_mru[2] = NOT_SET;
|
||||
|
||||
WNDCLASS wc;
|
||||
ZeroMemory(&wc, sizeof(wc));
|
||||
|
||||
wc.lpfnWndProc = mstsc_WndProc;
|
||||
wc.hbrBackground = static_cast<HBRUSH>(GetStockObject(HOLLOW_BRUSH));
|
||||
wc.lpszClassName = TEXT("MissTosca_Desktop");
|
||||
|
||||
ATOM a = RegisterClass(&wc);
|
||||
|
||||
hwnd = CreateWindow
|
||||
(
|
||||
MAKEINTATOM(a),
|
||||
NULL,
|
||||
WS_POPUP | WS_VISIBLE,
|
||||
CW_USEDEFAULT,
|
||||
CW_USEDEFAULT,
|
||||
This->width,
|
||||
This->height,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
This
|
||||
);
|
||||
|
||||
// The righ time to start the protocol thread
|
||||
DWORD dwThreadId;
|
||||
HANDLE hThread = CreateThread(NULL, 0, mstsc_ProtocolIOThread, This, 0, &dwThreadId);
|
||||
|
||||
// Your standard, garden variety message loop
|
||||
MSG msg;
|
||||
|
||||
while(GetMessage(&msg, NULL, 0, 0))
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
|
||||
// EOF
|
|
@ -0,0 +1,231 @@
|
|||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Name="rdesktop-core-tester"
|
||||
ProjectGUID="{B172A623-E2BD-4E3F-86E6-620548FE255B}"
|
||||
RootNamespace="rdesktopcoretester"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""$(SolutionDir)";"C:\Documents and Settings\All Users\Documenti\openssl-0.9.8b\inc32""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="2"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="kernel32.lib user32.lib gdi32.lib ws2_32.lib libeay32.lib advapi32.lib $(NoInherit)"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories=""C:\Documents and Settings\All Users\Documenti\openssl-0.9.8b\out32""
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""$(SolutionDir)";"C:\Documents and Settings\All Users\Documenti\openssl-0.9.8b\inc32""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="2"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="kernel32.lib user32.lib gdi32.lib ws2_32.lib libeay32.lib advapi32.lib $(NoInherit)"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories=""C:\Documents and Settings\All Users\Documenti\openssl-0.9.8b\out32""
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
<ProjectReference
|
||||
ReferencedProjectIdentifier="{8620E9B2-9AF0-4F69-A5AF-C195D5F86372}"
|
||||
RelativePathToProject=".\rdesktop\rdesktop-core.vcproj"
|
||||
/>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\rdesktop-core-tester.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\stdafx.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\stdafx.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
|
@ -0,0 +1,8 @@
|
|||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// rdesktop-core-tester.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: reference any additional headers you need in STDAFX.H
|
||||
// and not in this file
|
|
@ -0,0 +1,18 @@
|
|||
#pragma once
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <direct.h>
|
||||
#include <io.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <winsock2.h>
|
||||
|
||||
// EOF
|
|
@ -21,10 +21,13 @@
|
|||
|
||||
#include "rdesktop.h"
|
||||
|
||||
// FIXME: header mess
|
||||
#if 0
|
||||
#define CHANNEL_CHUNK_LENGTH 1600
|
||||
#define CHANNEL_FLAG_FIRST 0x01
|
||||
#define CHANNEL_FLAG_LAST 0x02
|
||||
#define CHANNEL_FLAG_SHOW_PROTOCOL 0x10
|
||||
#endif
|
||||
|
||||
/* FIXME: We should use the information in TAG_SRV_CHANNELS to map RDP5
|
||||
channels to MCS channels.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
rdesktop: A Remote Desktop Protocol client.
|
||||
Miscellaneous protocol constants
|
||||
Copyright (C) Matthew Chapman 1999-2005
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
|
@ -311,9 +311,10 @@ enum RDP_INPUT_DEVICE
|
|||
#define MASK_HAS_BITS(var, mask) ((var & mask)>0)
|
||||
#define MASK_CHANGE_BIT(var, mask, active) (var = ((var & ~mask) | (active ? mask : 0)))
|
||||
|
||||
/* Clipboard constants, "borrowed" from GCC system headers in
|
||||
/* Clipboard constants, "borrowed" from GCC system headers in
|
||||
the w32 cross compiler */
|
||||
|
||||
#if 0
|
||||
#define CF_TEXT 1
|
||||
#define CF_BITMAP 2
|
||||
#define CF_METAFILEPICT 3
|
||||
|
@ -377,7 +378,6 @@ enum RDP_INPUT_DEVICE
|
|||
#define STATUS_NOTIFY_ENUM_DIR 0xc000010c
|
||||
#define STATUS_CANCELLED 0xc0000120
|
||||
|
||||
|
||||
/* RDPDR constants */
|
||||
#define RDPDR_MAX_DEVICES 0x10
|
||||
#define DEVICE_TYPE_SERIAL 0x01
|
||||
|
@ -413,7 +413,9 @@ enum RDP_INPUT_DEVICE
|
|||
#define exDiscReasonLicenseErrClientEncryption 0x0108
|
||||
#define exDiscReasonLicenseCantUpgradeLicense 0x0109
|
||||
#define exDiscReasonLicenseNoRemoteConnections 0x010a
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
/* SeamlessRDP constants */
|
||||
#define SEAMLESSRDP_NOTYETMAPPED -1
|
||||
#define SEAMLESSRDP_NORMAL 0
|
||||
|
@ -425,3 +427,4 @@ enum RDP_INPUT_DEVICE
|
|||
|
||||
#define SEAMLESSRDP_HELLO_RECONNECT 0x0001
|
||||
#define SEAMLESSRDP_HELLO_HIDDEN 0x0002
|
||||
#endif
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
*/
|
||||
|
||||
#include "rdesktop.h"
|
||||
#include <openssl/rc4.h>
|
||||
#include <openssl/rc4.h> // TODO: remove dependency on OpenSSL
|
||||
|
||||
/* Generate a session key and RC4 keys, given client and server randoms */
|
||||
static void
|
||||
|
|
|
@ -56,6 +56,7 @@ void cliprdr_send_data_request(RDPCLIENT * This, uint32 format);
|
|||
void cliprdr_send_data(RDPCLIENT * This, uint8 * data, uint32 length);
|
||||
void cliprdr_set_mode(RDPCLIENT * This, const char *optarg);
|
||||
BOOL cliprdr_init(RDPCLIENT * This);
|
||||
#if 0
|
||||
/* disk.c */
|
||||
int disk_enum_devices(RDPCLIENT * This, uint32 * id, char *optarg);
|
||||
NTSTATUS disk_query_information(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, STREAM out);
|
||||
|
@ -64,6 +65,7 @@ NTSTATUS disk_check_notify(RDPCLIENT * This, NTHANDLE handle);
|
|||
NTSTATUS disk_create_notify(RDPCLIENT * This, NTHANDLE handle, uint32 info_class);
|
||||
NTSTATUS disk_query_volume_information(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, STREAM out);
|
||||
NTSTATUS disk_query_directory(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, char *pattern, STREAM out);
|
||||
#endif
|
||||
/* mppc.c */
|
||||
int mppc_expand(RDPCLIENT * This, uint8 * data, uint32 clen, uint8 ctype, uint32 * roff, uint32 * rlen);
|
||||
/* ewmhints.c */
|
||||
|
@ -153,6 +155,7 @@ BOOL rdp_reconnect(RDPCLIENT * This, char *server, uint32 flags, char *domain, c
|
|||
char *directory, char *cookie);
|
||||
void rdp_reset_state(RDPCLIENT * This);
|
||||
void rdp_disconnect(RDPCLIENT * This);
|
||||
#if 0
|
||||
/* rdpdr.c */
|
||||
int get_device_index(RDPCLIENT * This, NTHANDLE handle);
|
||||
void convert_to_unix_filename(char *filename);
|
||||
|
@ -162,6 +165,8 @@ struct async_iorequest *rdpdr_remove_iorequest(RDPCLIENT * This, struct async_io
|
|||
struct async_iorequest *iorq);
|
||||
void rdpdr_check_fds(RDPCLIENT * This, fd_set * rfds, fd_set * wfds, BOOL timed_out);
|
||||
BOOL rdpdr_abort_io(RDPCLIENT * This, uint32 fd, uint32 major, NTSTATUS status);
|
||||
#endif
|
||||
#if 0
|
||||
/* rdpsnd.c */
|
||||
void rdpsnd_send_completion(RDPCLIENT * This, uint16 tick, uint8 packet_index);
|
||||
BOOL rdpsnd_init(RDPCLIENT * This);
|
||||
|
@ -173,6 +178,7 @@ BOOL wave_out_set_format(WAVEFORMATEX * pwfx);
|
|||
void wave_out_volume(uint16 left, uint16 right);
|
||||
void wave_out_write(STREAM s, uint16 tick, uint8 index);
|
||||
void wave_out_play(void);
|
||||
#endif
|
||||
/* secure.c */
|
||||
void sec_hash_48(uint8 * out, uint8 * in, uint8 * salt1, uint8 * salt2, uint8 salt);
|
||||
void sec_hash_16(uint8 * out, uint8 * in, uint8 * salt1, uint8 * salt2);
|
||||
|
@ -189,10 +195,12 @@ BOOL sec_connect(RDPCLIENT * This, char *server, char *username);
|
|||
BOOL sec_reconnect(RDPCLIENT * This, char *server);
|
||||
void sec_disconnect(RDPCLIENT * This);
|
||||
void sec_reset_state(RDPCLIENT * This);
|
||||
#if 0
|
||||
/* serial.c */
|
||||
int serial_enum_devices(RDPCLIENT * This, uint32 * id, char *optarg);
|
||||
BOOL serial_get_event(RDPCLIENT * This, NTHANDLE handle, uint32 * result);
|
||||
BOOL serial_get_timeout(RDPCLIENT * This, NTHANDLE handle, uint32 length, uint32 * timeout, uint32 * itv_timeout);
|
||||
#endif
|
||||
/* tcp.c */
|
||||
STREAM tcp_init(RDPCLIENT * This, uint32 maxlen);
|
||||
void tcp_send(RDPCLIENT * This, STREAM s);
|
||||
|
@ -210,6 +218,7 @@ void ui_clip_sync(RDPCLIENT * This);
|
|||
void ui_clip_set_mode(RDPCLIENT * This, const char *optarg);
|
||||
void xclip_init(RDPCLIENT * This);
|
||||
void xclip_deinit(RDPCLIENT * This);
|
||||
#if 0
|
||||
/* xkeymap.c */
|
||||
BOOL xkeymap_from_locale(RDPCLIENT * This, const char *locale);
|
||||
FILE *xkeymap_open(const char *filename);
|
||||
|
@ -227,6 +236,7 @@ unsigned int read_keyboard_state(RDPCLIENT * This);
|
|||
uint16 ui_get_numlock_state(RDPCLIENT * This, unsigned int state);
|
||||
void reset_modifier_keys(RDPCLIENT * This);
|
||||
void rdp_send_scancode(RDPCLIENT * This, uint32 time, uint16 flags, uint8 scancode);
|
||||
#endif
|
||||
/* xwin.c */
|
||||
BOOL get_key_state(RDPCLIENT * This, unsigned int state, uint32 keysym);
|
||||
BOOL ui_init(RDPCLIENT * This);
|
||||
|
|
255
reactos/base/applications/tsclient/rdesktop/rdesktop-core.vcproj
Normal file
255
reactos/base/applications/tsclient/rdesktop/rdesktop-core.vcproj
Normal file
|
@ -0,0 +1,255 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Name="rdesktop-core"
|
||||
ProjectGUID="{8620E9B2-9AF0-4F69-A5AF-C195D5F86372}"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="Debug"
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="4"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""C:\Documents and Settings\All Users\Documenti\openssl-0.9.8b\inc32""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;WITH_DEBUG;"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="Release"
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="4"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""C:\Documents and Settings\All Users\Documenti\openssl-0.9.8b\inc32""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\constants.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\disk.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\orders.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\parse.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\proto.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\rdesktop.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\scancodes.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\seamless.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\types.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\xproto.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\bitmap.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\cache.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\channels.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\iso.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\licence.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\mcs.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\mppc.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\orders.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\pstcache.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\rdp.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\rdp5.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\secure.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\tcp.c"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
|
@ -18,6 +18,14 @@
|
|||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
#include <cchannel.h>
|
||||
|
||||
#if 0
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
@ -32,14 +40,18 @@
|
|||
#include <limits.h> /* PATH_MAX */
|
||||
|
||||
/* FIXME FIXME */
|
||||
#include <windows.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xatom.h>
|
||||
/* FIXME FIXME */
|
||||
#endif
|
||||
|
||||
// TODO
|
||||
#include <openssl/rc4.h>
|
||||
#include <openssl/md5.h>
|
||||
#include <openssl/sha.h>
|
||||
#include <openssl/bn.h>
|
||||
#include <openssl/x509v3.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xatom.h>
|
||||
/* FIXME FIXME */
|
||||
|
||||
#define VERSION "1.4.1"
|
||||
|
||||
|
@ -128,6 +140,7 @@ typedef struct rdpclient RDPCLIENT;
|
|||
#include "types.h"
|
||||
#include "orders.h"
|
||||
|
||||
#if 0
|
||||
/* Used to store incoming io request, until they are ready to be completed */
|
||||
/* using a linked list ensures that they are processed in the right order, */
|
||||
/* if multiple ios are being done on the same fd */
|
||||
|
@ -141,6 +154,7 @@ struct async_iorequest
|
|||
|
||||
struct async_iorequest *next; /* next element in list */
|
||||
};
|
||||
#endif
|
||||
|
||||
struct bmpcache_entry
|
||||
{
|
||||
|
@ -149,6 +163,7 @@ struct bmpcache_entry
|
|||
sint16 next;
|
||||
};
|
||||
|
||||
#if 0
|
||||
typedef struct _seamless_group
|
||||
{
|
||||
Window wnd;
|
||||
|
@ -174,33 +189,25 @@ typedef struct _seamless_window
|
|||
|
||||
struct _seamless_window *next;
|
||||
} seamless_window;
|
||||
#endif
|
||||
|
||||
/* holds the whole state of the RDP client */
|
||||
struct rdpclient
|
||||
{
|
||||
/* Public fields */
|
||||
/* channels.c */
|
||||
#define MAX_CHANNELS 6
|
||||
VCHANNEL channels[MAX_CHANNELS];
|
||||
unsigned int num_channels;
|
||||
|
||||
/* disk.c */
|
||||
#define MAX_OPEN_FILES 0x100
|
||||
FILEINFO fileinfo[MAX_OPEN_FILES];
|
||||
BOOL notify_stamp;
|
||||
|
||||
/* ewmhints.c */
|
||||
Atom net_wm_state_atom, net_wm_desktop_atom;
|
||||
|
||||
/* licence.c */
|
||||
BOOL licence_issued;
|
||||
|
||||
/* mppc.c */
|
||||
RDPCOMP mppc_dict;
|
||||
|
||||
/* mcs.c */
|
||||
uint16 mcs_userid;
|
||||
|
||||
/* mppc.c */
|
||||
RDPCOMP mppc_dict;
|
||||
|
||||
/* pstcache.c */
|
||||
int pstcache_fd[8];
|
||||
int pstcache_Bpp;
|
||||
|
@ -210,7 +217,7 @@ struct rdpclient
|
|||
char title[64];
|
||||
char username[64];
|
||||
char hostname[16];
|
||||
char keymapname[PATH_MAX];
|
||||
char keymapname[MAX_PATH];
|
||||
unsigned int keylayout;
|
||||
int keyboard_type;
|
||||
int keyboard_subtype;
|
||||
|
@ -259,50 +266,16 @@ struct rdpclient
|
|||
char redirect_cookie[128];
|
||||
uint32 redirect_flags;
|
||||
|
||||
#ifdef WITH_RDPSND
|
||||
BOOL rdpsnd_enabled;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ICONV
|
||||
char codepage[16];
|
||||
#endif
|
||||
|
||||
/* rdp.c */
|
||||
uint8 *next_packet;
|
||||
uint32 rdp_shareid;
|
||||
|
||||
/* rdpdr.c */
|
||||
/* If select() times out, the request for the device with handle min_timeout_fd is aborted */
|
||||
NTHANDLE min_timeout_fd;
|
||||
uint32 num_devices;
|
||||
|
||||
/* Table with information about rdpdr devices */
|
||||
RDPDR_DEVICE rdpdr_device[RDPDR_MAX_DEVICES];
|
||||
char *rdpdr_clientname;
|
||||
|
||||
struct async_iorequest *iorequest;
|
||||
|
||||
/* rdpsndXXX.c */
|
||||
#ifdef WITH_RDPSND
|
||||
int dsp_fd;
|
||||
BOOL dsp_busy;
|
||||
#endif
|
||||
|
||||
/* secure.c */
|
||||
uint16 server_rdp_version;
|
||||
|
||||
/* tcp.c */
|
||||
int tcp_port_rdp;
|
||||
|
||||
/* xwin.c */
|
||||
Display *display;
|
||||
BOOL enable_compose;
|
||||
BOOL Unobscured; /* used for screenblt */
|
||||
Time last_gesturetime;
|
||||
Window wnd;
|
||||
|
||||
/* Private fields */
|
||||
/* FIXME: it's not pretty to spill private fields this way. Use opaque pointers */
|
||||
/* cache.c */
|
||||
struct cache_
|
||||
{
|
||||
|
@ -320,23 +293,6 @@ struct rdpclient
|
|||
}
|
||||
cache;
|
||||
|
||||
/* cliprdr.c */
|
||||
struct cliprdr_
|
||||
{
|
||||
VCHANNEL *channel;
|
||||
uint8 *last_formats;
|
||||
uint32 last_formats_length;
|
||||
}
|
||||
cliprdr;
|
||||
|
||||
struct ewmhints_
|
||||
{
|
||||
Atom state_maximized_vert_atom, state_maximized_horz_atom,
|
||||
state_hidden_atom, name_atom, utf8_string_atom,
|
||||
state_skip_taskbar_atom, state_skip_pager_atom, state_modal_atom;
|
||||
}
|
||||
ewmhints;
|
||||
|
||||
/* licence.c */
|
||||
struct licence_
|
||||
{
|
||||
|
@ -365,36 +321,6 @@ struct rdpclient
|
|||
}
|
||||
rdp;
|
||||
|
||||
/* rdpdr.c */
|
||||
struct rdpdr_
|
||||
{
|
||||
VCHANNEL *channel;
|
||||
}
|
||||
rdpdr;
|
||||
|
||||
/* rdpsnd.c */
|
||||
struct rdpsnd_
|
||||
{
|
||||
VCHANNEL *channel;
|
||||
|
||||
BOOL device_open;
|
||||
|
||||
#define MAX_FORMATS 10
|
||||
WAVEFORMATEX formats[MAX_FORMATS];
|
||||
|
||||
unsigned int format_count;
|
||||
unsigned int current_format;
|
||||
}
|
||||
rdpsnd;
|
||||
|
||||
/* seamless.c */
|
||||
struct seamless_
|
||||
{
|
||||
VCHANNEL *channel;
|
||||
unsigned int serial;
|
||||
}
|
||||
seamless;
|
||||
|
||||
/* secure.c */
|
||||
struct secure_
|
||||
{
|
||||
|
@ -426,6 +352,91 @@ struct rdpclient
|
|||
}
|
||||
tcp;
|
||||
|
||||
#if 0
|
||||
/* Public fields */
|
||||
/* disk.c */
|
||||
#define MAX_OPEN_FILES 0x100
|
||||
FILEINFO fileinfo[MAX_OPEN_FILES];
|
||||
BOOL notify_stamp;
|
||||
|
||||
/* ewmhints.c */
|
||||
Atom net_wm_state_atom, net_wm_desktop_atom;
|
||||
|
||||
/* rdpdr.c */
|
||||
/* If select() times out, the request for the device with handle min_timeout_fd is aborted */
|
||||
NTHANDLE min_timeout_fd;
|
||||
uint32 num_devices;
|
||||
|
||||
/* Table with information about rdpdr devices */
|
||||
RDPDR_DEVICE rdpdr_device[RDPDR_MAX_DEVICES];
|
||||
char *rdpdr_clientname;
|
||||
|
||||
struct async_iorequest *iorequest;
|
||||
|
||||
/* rdpsndXXX.c */
|
||||
#ifdef WITH_RDPSND
|
||||
int dsp_fd;
|
||||
BOOL dsp_busy;
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
/* xwin.c */
|
||||
Display *display;
|
||||
BOOL enable_compose;
|
||||
BOOL Unobscured; /* used for screenblt */
|
||||
Time last_gesturetime;
|
||||
Window wnd;
|
||||
#endif
|
||||
|
||||
/* Private fields */
|
||||
/* FIXME: it's not pretty to spill private fields this way. Use opaque pointers */
|
||||
/* cliprdr.c */
|
||||
struct cliprdr_
|
||||
{
|
||||
VCHANNEL *channel;
|
||||
uint8 *last_formats;
|
||||
uint32 last_formats_length;
|
||||
}
|
||||
cliprdr;
|
||||
|
||||
struct ewmhints_
|
||||
{
|
||||
Atom state_maximized_vert_atom, state_maximized_horz_atom,
|
||||
state_hidden_atom, name_atom, utf8_string_atom,
|
||||
state_skip_taskbar_atom, state_skip_pager_atom, state_modal_atom;
|
||||
}
|
||||
ewmhints;
|
||||
|
||||
/* rdpdr.c */
|
||||
struct rdpdr_
|
||||
{
|
||||
VCHANNEL *channel;
|
||||
}
|
||||
rdpdr;
|
||||
|
||||
/* rdpsnd.c */
|
||||
struct rdpsnd_
|
||||
{
|
||||
VCHANNEL *channel;
|
||||
|
||||
BOOL device_open;
|
||||
|
||||
#define MAX_FORMATS 10
|
||||
WAVEFORMATEX formats[MAX_FORMATS];
|
||||
|
||||
unsigned int format_count;
|
||||
unsigned int current_format;
|
||||
}
|
||||
rdpsnd;
|
||||
|
||||
/* seamless.c */
|
||||
struct seamless_
|
||||
{
|
||||
VCHANNEL *channel;
|
||||
unsigned int serial;
|
||||
}
|
||||
seamless;
|
||||
|
||||
/* xclip.c */
|
||||
struct xclip_
|
||||
{
|
||||
|
@ -520,6 +531,7 @@ struct rdpclient
|
|||
}
|
||||
xkeymap;
|
||||
|
||||
#if 0
|
||||
/* xwin.c */
|
||||
struct xwin_
|
||||
{
|
||||
|
@ -565,9 +577,9 @@ struct rdpclient
|
|||
binary format. If so, we can avoid an expensive translation.
|
||||
Note that this can be true when compatible_arch is false,
|
||||
e.g.:
|
||||
|
||||
|
||||
RDP(LE) <-> host(BE) <-> X-Server(LE)
|
||||
|
||||
|
||||
('host' is the machine running rdesktop; the host simply memcpy's
|
||||
so its endianess doesn't matter)
|
||||
*/
|
||||
|
@ -595,6 +607,8 @@ struct rdpclient
|
|||
XErrorHandler old_error_handler;
|
||||
}
|
||||
xwin;
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifndef MAKE_PROTO
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
//#include <unistd.h>
|
||||
#include "rdesktop.h"
|
||||
|
||||
#ifdef HAVE_ICONV
|
||||
|
@ -932,7 +932,7 @@ process_demand_active(RDPCLIENT * This, STREAM s)
|
|||
rdp_recv(This, &type); /* RDP_CTL_COOPERATE */
|
||||
rdp_recv(This, &type); /* RDP_CTL_GRANT_CONTROL */
|
||||
rdp_send_input(This, 0, RDP_INPUT_SYNCHRONIZE, 0,
|
||||
This->numlock_sync ? ui_get_numlock_state(This, read_keyboard_state(This)) : 0, 0);
|
||||
/*This->numlock_sync ? ui_get_numlock_state(This, read_keyboard_state(This)) :*/ 0, 0); // TODO: keyboard mess
|
||||
|
||||
if (This->use_rdp5)
|
||||
{
|
||||
|
@ -968,7 +968,7 @@ process_colour_pointer_pdu(RDPCLIENT * This, STREAM s)
|
|||
in_uint8p(s, mask, masklen);
|
||||
cursor = ui_create_cursor(This, x, y, width, height, mask, data);
|
||||
ui_set_cursor(This, cursor);
|
||||
cache_put_cursor(This, cache_idx, cursor);
|
||||
// cache_put_cursor(This, cache_idx, cursor); // TODO
|
||||
}
|
||||
|
||||
/* Process a cached pointer PDU */
|
||||
|
@ -978,7 +978,7 @@ process_cached_pointer_pdu(RDPCLIENT * This, STREAM s)
|
|||
uint16 cache_idx;
|
||||
|
||||
in_uint16_le(s, cache_idx);
|
||||
ui_set_cursor(This, cache_get_cursor(This, cache_idx));
|
||||
ui_set_cursor(This, /*cache_get_cursor(This, cache_idx)*/ NULL); // TODO
|
||||
}
|
||||
|
||||
/* Process a system pointer PDU */
|
||||
|
|
|
@ -19,7 +19,9 @@
|
|||
*/
|
||||
|
||||
#include "rdesktop.h"
|
||||
#include <string.h>
|
||||
|
||||
// TODO: remove dependency on OpenSSL
|
||||
#include <openssl/rc4.h>
|
||||
#include <openssl/md5.h>
|
||||
#include <openssl/sha.h>
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#if 0 // FIXME: header mess
|
||||
#include <unistd.h> /* select read write close */
|
||||
#include <sys/socket.h> /* socket connect setsockopt */
|
||||
#include <sys/time.h> /* timeval */
|
||||
|
@ -26,7 +27,12 @@
|
|||
#include <netinet/tcp.h> /* TCP_NODELAY */
|
||||
#include <arpa/inet.h> /* inet_addr */
|
||||
#include <errno.h> /* errno */
|
||||
#endif
|
||||
|
||||
#include "rdesktop.h"
|
||||
#include <winsock2.h>
|
||||
|
||||
typedef int socklen_t;
|
||||
|
||||
#ifndef INADDR_NONE
|
||||
#define INADDR_NONE ((unsigned long) -1)
|
||||
|
@ -59,7 +65,7 @@ tcp_send(RDPCLIENT * This, STREAM s)
|
|||
sent = send(This->tcp.sock, s->data + total, length - total, 0);
|
||||
if (sent <= 0)
|
||||
{
|
||||
error("send: %s\n", strerror(errno));
|
||||
// error("send: %s\n", strerror(errno)); // EOF
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -109,7 +115,7 @@ tcp_recv(RDPCLIENT * This, STREAM s, uint32 length)
|
|||
rcvd = recv(This->tcp.sock, s->end, length, 0);
|
||||
if (rcvd < 0)
|
||||
{
|
||||
error("recv: %s\n", strerror(errno));
|
||||
// error("recv: %s\n", strerror(errno)); // EOF
|
||||
return NULL;
|
||||
}
|
||||
else if (rcvd == 0)
|
||||
|
@ -188,7 +194,7 @@ tcp_connect(RDPCLIENT * This, char *server)
|
|||
|
||||
if ((This->tcp.sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
|
||||
{
|
||||
error("socket: %s\n", strerror(errno));
|
||||
// error("socket: %s\n", strerror(errno)); // EOF
|
||||
return False;
|
||||
}
|
||||
|
||||
|
@ -197,7 +203,7 @@ tcp_connect(RDPCLIENT * This, char *server)
|
|||
|
||||
if (connect(This->tcp.sock, (struct sockaddr *) &servaddr, sizeof(struct sockaddr)) < 0)
|
||||
{
|
||||
error("connect: %s\n", strerror(errno));
|
||||
// error("connect: %s\n", strerror(errno)); // EOF
|
||||
close(This->tcp.sock);
|
||||
return False;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
rdesktop: A Remote Desktop Protocol client.
|
||||
Common data types
|
||||
Copyright (C) Matthew Chapman 1999-2005
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
|
@ -12,13 +12,15 @@
|
|||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#if 0
|
||||
typedef int BOOL;
|
||||
#endif
|
||||
|
||||
#ifndef True
|
||||
#define True (1)
|
||||
|
@ -32,17 +34,25 @@ typedef signed short sint16;
|
|||
typedef unsigned int uint32;
|
||||
typedef signed int sint32;
|
||||
|
||||
// TODO: detect Win32, avoid this mess
|
||||
#if 0
|
||||
typedef void *HBITMAP;
|
||||
typedef void *HGLYPH;
|
||||
typedef void *HCOLOURMAP;
|
||||
typedef void *HCURSOR;
|
||||
#endif
|
||||
typedef void *HGLYPH;
|
||||
|
||||
// TODO: nuke, use HPALETTE
|
||||
typedef void *HCOLOURMAP;
|
||||
|
||||
#if 0
|
||||
typedef struct _POINT
|
||||
{
|
||||
sint16 x, y;
|
||||
}
|
||||
POINT;
|
||||
#endif
|
||||
|
||||
// TODO: nuke, use COLORREF
|
||||
typedef struct _COLOURENTRY
|
||||
{
|
||||
uint8 red;
|
||||
|
@ -52,6 +62,7 @@ typedef struct _COLOURENTRY
|
|||
}
|
||||
COLOURENTRY;
|
||||
|
||||
// TODO: nuke, use LOGPALETTE
|
||||
typedef struct _COLOURMAP
|
||||
{
|
||||
uint16 ncolours;
|
||||
|
@ -60,6 +71,7 @@ typedef struct _COLOURMAP
|
|||
}
|
||||
COLOURMAP;
|
||||
|
||||
// TODO: nuke, use RECT
|
||||
typedef struct _BOUNDS
|
||||
{
|
||||
sint16 left;
|
||||
|
@ -70,7 +82,8 @@ typedef struct _BOUNDS
|
|||
}
|
||||
BOUNDS;
|
||||
|
||||
typedef struct _PEN
|
||||
// TODO: nuke, use LOGPEN
|
||||
typedef struct _PEN
|
||||
{
|
||||
uint8 style;
|
||||
uint8 width;
|
||||
|
@ -79,6 +92,7 @@ typedef struct _PEN
|
|||
}
|
||||
PEN;
|
||||
|
||||
// TODO: nuke, use LOGBRUSH + pattern[8]
|
||||
typedef struct _BRUSH
|
||||
{
|
||||
uint8 xorigin;
|
||||
|
@ -119,6 +133,7 @@ typedef struct _key_translation
|
|||
}
|
||||
key_translation;
|
||||
|
||||
// TODO: semi-nuke, wrap CHANNEL_DEF
|
||||
typedef struct _VCHANNEL
|
||||
{
|
||||
uint16 mcs_id;
|
||||
|
@ -145,6 +160,7 @@ CELLHEADER;
|
|||
#define MAX_CBSIZE 256
|
||||
|
||||
/* RDPSND */
|
||||
#if 0
|
||||
typedef struct
|
||||
{
|
||||
uint16 wFormatTag;
|
||||
|
@ -156,7 +172,7 @@ typedef struct
|
|||
uint16 cbSize;
|
||||
uint8 cb[MAX_CBSIZE];
|
||||
} WAVEFORMATEX;
|
||||
|
||||
#endif
|
||||
typedef struct _RDPCOMP
|
||||
{
|
||||
uint32 roff;
|
||||
|
@ -165,6 +181,7 @@ typedef struct _RDPCOMP
|
|||
}
|
||||
RDPCOMP;
|
||||
|
||||
#if 0
|
||||
/* RDPDR */
|
||||
typedef uint32 NTSTATUS;
|
||||
typedef uint32 NTHANDLE;
|
||||
|
@ -264,5 +281,6 @@ typedef struct fileinfo
|
|||
uint32 info_class;
|
||||
}
|
||||
FILEINFO;
|
||||
#endif
|
||||
|
||||
typedef BOOL(*str_handle_lines_t) (RDPCLIENT * This, const char *line, void *data);
|
||||
|
|
Loading…
Reference in a new issue