libfreerdp-core: improvements for C# bindings

This commit is contained in:
Marc-André Moreau 2012-09-03 17:08:46 -04:00
parent 6ef90c4f09
commit 7838e22477
8 changed files with 56 additions and 29 deletions

View File

@ -251,7 +251,7 @@ struct rdp_monitor
struct rdp_settings
{
ALIGN64 void* instance; /* 0 */
ALIGN64 uint64 paddingA[16 - 1]; /* 1 */
uint64 paddingA[16 - 1]; /* 1 */
/* Core Protocol Parameters */
ALIGN64 uint32 width; /* 16 */
@ -270,7 +270,7 @@ struct rdp_settings
ALIGN64 boolean authentication; /* 29 */
ALIGN64 uint32 negotiationFlags; /* 30 */
ALIGN64 boolean security_layer_negotiation; /* 31 */
ALIGN64 uint64 paddingB[48 - 32]; /* 32 */
uint64 paddingB[48 - 32]; /* 32 */
/* Connection Settings */
ALIGN64 uint32 port; /* 48 */
@ -299,7 +299,7 @@ struct rdp_settings
ALIGN64 boolean send_preconnection_pdu; /* 71 */
ALIGN64 uint32 preconnection_id; /* 72 */
ALIGN64 char* preconnection_blob; /* 73 */
ALIGN64 uint64 paddingC[80 - 74]; /* 74 */
uint64 paddingC[80 - 74]; /* 74 */
/* User Interface Parameters */
ALIGN64 boolean sw_gdi; /* 80 */
@ -311,7 +311,7 @@ struct rdp_settings
ALIGN64 boolean mouse_motion; /* 86 */
ALIGN64 char* window_title; /* 87 */
ALIGN64 uint64 parent_window_xid; /* 88 */
ALIGN64 uint64 paddingD[112 - 89]; /* 89 */
uint64 paddingD[112 - 89]; /* 89 */
/* Internal Parameters */
ALIGN64 char* home_path; /* 112 */
@ -323,7 +323,7 @@ struct rdp_settings
ALIGN64 char* current_path; /* 118 */
ALIGN64 char* development_path; /* 119 */
ALIGN64 boolean development_mode; /* 120 */
ALIGN64 uint64 paddingE[144 - 121]; /* 121 */
uint64 paddingE[144 - 121]; /* 121 */
/* Security */
ALIGN64 boolean encryption; /* 144 */
@ -332,7 +332,7 @@ struct rdp_settings
ALIGN64 boolean rdp_security; /* 147 */
ALIGN64 uint32 ntlm_version; /* 148 */
ALIGN64 boolean salted_checksum; /* 149 */
ALIGN64 uint64 paddingF[160 - 150]; /* 150 */
uint64 paddingF[160 - 150]; /* 150 */
/* Session */
ALIGN64 boolean console_audio; /* 160 */
@ -340,23 +340,23 @@ struct rdp_settings
ALIGN64 uint32 redirected_session_id; /* 162 */
ALIGN64 boolean audio_playback; /* 163 */
ALIGN64 boolean audio_capture; /* 164 */
ALIGN64 uint64 paddingG[176 - 165]; /* 165 */
uint64 paddingG[176 - 165]; /* 165 */
/* Output Control */
ALIGN64 boolean refresh_rect; /* 176 */
ALIGN64 boolean suppress_output; /* 177 */
ALIGN64 boolean desktop_resize; /* 178 */
ALIGN64 uint64 paddingH[192 - 179]; /* 179 */
uint64 paddingH[192 - 179]; /* 179 */
/* Reconnection */
ALIGN64 boolean auto_reconnection; /* 192 */
ALIGN64 ARC_CS_PRIVATE_PACKET* client_auto_reconnect_cookie; /* 193 */
ALIGN64 ARC_SC_PRIVATE_PACKET* server_auto_reconnect_cookie; /* 194 */
ALIGN64 uint64 paddingI[208 - 195]; /* 195 */
uint64 paddingI[208 - 195]; /* 195 */
/* Time Zone */
ALIGN64 TIME_ZONE_INFO* client_time_zone; /* 208 */
ALIGN64 uint64 paddingJ[216 - 209]; /* 209 */
uint64 paddingJ[216 - 209]; /* 209 */
/* Capabilities */
ALIGN64 uint32 os_major_type; /* 216 */
@ -376,7 +376,7 @@ struct rdp_settings
ALIGN64 boolean disable_theming; /* 230 */
ALIGN64 uint32 connection_type; /* 231 */
ALIGN64 uint32 multifrag_max_request_size; /* 232 */
ALIGN64 uint64 paddingK[248 - 233]; /* 233 */
uint64 paddingK[248 - 233]; /* 233 */
/* Certificate */
ALIGN64 char* cert_file; /* 248 */
@ -390,7 +390,7 @@ struct rdp_settings
ALIGN64 char* rdp_key_file; /* 256 */
ALIGN64 rdpKey* server_key; /* 257 */
ALIGN64 char* certificate_name; /* 258 */
ALIGN64 uint64 paddingL[280 - 259]; /* 259 */
uint64 paddingL[280 - 259]; /* 259 */
/* Codecs */
ALIGN64 boolean rfx_codec; /* 280 */
@ -403,27 +403,28 @@ struct rdp_settings
ALIGN64 uint32 jpeg_codec_id; /* 287 */
ALIGN64 uint32 jpeg_quality; /* 288 */
ALIGN64 uint32 v3_codec_id; /* 289 */
ALIGN64 uint64 paddingM[296 - 290]; /* 290 */
ALIGN64 boolean rfx_codec_only; /* 290 */
uint64 paddingM[296 - 291]; /* 291 */
/* Recording */
ALIGN64 boolean dump_rfx; /* 296 */
ALIGN64 boolean play_rfx; /* 297 */
ALIGN64 char* dump_rfx_file; /* 298 */
ALIGN64 char* play_rfx_file; /* 299 */
ALIGN64 uint64 paddingN[312 - 300]; /* 300 */
uint64 paddingN[312 - 300]; /* 300 */
/* RemoteApp */
ALIGN64 boolean remote_app; /* 312 */
ALIGN64 uint32 num_icon_caches; /* 313 */
ALIGN64 uint32 num_icon_cache_entries; /* 314 */
ALIGN64 boolean rail_langbar_supported; /* 315 */
ALIGN64 uint64 paddingO[320 - 316]; /* 316 */
uint64 paddingO[320 - 316]; /* 316 */
/* Pointer */
ALIGN64 boolean large_pointer; /* 320 */
ALIGN64 boolean color_pointer; /* 321 */
ALIGN64 uint32 pointer_cache_size; /* 322 */
ALIGN64 uint64 paddingP[328 - 323]; /* 323 */
uint64 paddingP[328 - 323]; /* 323 */
/* Bitmap Cache */
ALIGN64 boolean bitmap_cache; /* 328 */
@ -431,35 +432,35 @@ struct rdp_settings
ALIGN64 boolean persistent_bitmap_cache; /* 330 */
ALIGN64 uint32 bitmapCacheV2NumCells; /* 331 */
ALIGN64 BITMAP_CACHE_V2_CELL_INFO* bitmapCacheV2CellInfo; /* 332 */
ALIGN64 uint64 paddingQ[344 - 333]; /* 333 */
uint64 paddingQ[344 - 333]; /* 333 */
/* Offscreen Bitmap Cache */
ALIGN64 boolean offscreen_bitmap_cache; /* 344 */
ALIGN64 uint32 offscreen_bitmap_cache_size; /* 345 */
ALIGN64 uint32 offscreen_bitmap_cache_entries; /* 346 */
ALIGN64 uint64 paddingR[352 - 347]; /* 347 */
uint64 paddingR[352 - 347]; /* 347 */
/* Glyph Cache */
ALIGN64 boolean glyph_cache; /* 352 */
ALIGN64 uint32 glyphSupportLevel; /* 353 */
ALIGN64 GLYPH_CACHE_DEFINITION* glyphCache; /* 354 */
ALIGN64 GLYPH_CACHE_DEFINITION* fragCache; /* 355 */
ALIGN64 uint64 paddingS[360 - 356]; /* 356 */
uint64 paddingS[360 - 356]; /* 356 */
/* Draw Nine Grid */
ALIGN64 boolean draw_nine_grid; /* 360 */
ALIGN64 uint32 draw_nine_grid_cache_size; /* 361 */
ALIGN64 uint32 draw_nine_grid_cache_entries; /* 362 */
ALIGN64 uint64 paddingT[368 - 363]; /* 363 */
uint64 paddingT[368 - 363]; /* 363 */
/* Draw GDI+ */
ALIGN64 boolean draw_gdi_plus; /* 368 */
ALIGN64 boolean draw_gdi_plus_cache; /* 369 */
ALIGN64 uint64 paddingU[376 - 370]; /* 370 */
uint64 paddingU[376 - 370]; /* 370 */
/* Desktop Composition */
ALIGN64 boolean desktop_composition; /* 376 */
ALIGN64 uint64 paddingV[384 - 377]; /* 377 */
uint64 paddingV[384 - 377]; /* 377 */
/* Channels */
ALIGN64 int num_channels;

View File

@ -30,4 +30,7 @@ FREERDP_API int freerdp_tcp_disconnect(int sockfd);
FREERDP_API int freerdp_tcp_set_no_delay(int sockfd, boolean no_delay);
FREERDP_API int freerdp_wsa_startup();
FREERDP_API int freerdp_wsa_cleanup();
#endif /* FREERDP_TCP_UTILS_H */

View File

@ -1473,7 +1473,7 @@ void rdp_write_rfx_client_capability_container(STREAM* s, rdpSettings* settings)
uint32 captureFlags;
uint8 codecMode;
captureFlags = settings->dump_rfx ? 0 : CARDP_CAPS_CAPTURE_NON_CAC;
captureFlags = settings->rfx_codec_only ? CARDP_CAPS_CAPTURE_NON_CAC : 0;
codecMode = settings->rfx_codec_mode;
stream_write_uint16(s, 49); /* codecPropertiesLength */

View File

@ -50,12 +50,14 @@
boolean freerdp_connect(freerdp* instance)
{
rdpRdp* rdp;
rdpSettings* settings;
boolean status = false;
/* We always set the return code to 0 before we start the connect sequence*/
connectErrorCode = 0;
rdp = instance->context->rdp;
settings = instance->settings;
IFCALLRET(instance->PreConnect, status, instance);
@ -67,7 +69,8 @@ boolean freerdp_connect(freerdp* instance)
if (status != true)
{
if(!connectErrorCode){
if(!connectErrorCode)
{
connectErrorCode = PREECONNECTERROR;
}
fprintf(stderr, "%s:%d: freerdp_pre_connect failed\n", __FILE__, __LINE__);
@ -75,8 +78,9 @@ boolean freerdp_connect(freerdp* instance)
}
status = rdp_client_connect(rdp);
// --authonly tests the connection without a UI
if (instance->settings->authentication_only) {
/* --authonly tests the connection without a UI */
if (instance->settings->authentication_only)
{
fprintf(stderr, "%s:%d: Authentication only, exit status %d\n", __FILE__, __LINE__, !status);
return status;
}
@ -191,7 +195,6 @@ boolean freerdp_disconnect(freerdp* instance)
boolean freerdp_shall_disconnect(freerdp* instance)
{
return instance->context->rdp->disconnect;
}
@ -278,7 +281,7 @@ freerdp* freerdp_new()
{
freerdp* instance;
instance = xzalloc(sizeof(freerdp));
instance = (freerdp*) xzalloc(sizeof(freerdp));
if (instance != NULL)
{

View File

@ -25,6 +25,7 @@
#include <stdlib.h>
#include <string.h>
#include <freerdp/utils/tcp.h>
#include <freerdp/utils/sleep.h>
#include <freerdp/utils/stream.h>
#include <freerdp/utils/memory.h>

View File

@ -512,6 +512,7 @@ int freerdp_parse_args(rdpSettings* settings, int argc, char** argv,
}
settings->dump_rfx_file = xstrdup(argv[index]);
settings->dump_rfx = true;
settings->rfx_codec_only = true;
}
else if (strcmp("--play-rfx", argv[index]) == 0)
{

View File

@ -195,3 +195,22 @@ int freerdp_tcp_set_no_delay(int sockfd, boolean no_delay)
return 0;
}
int freerdp_wsa_startup()
{
#ifdef _WIN32
WSADATA wsaData;
return WSAStartup(0x101, &wsaData);
#else
return 0;
#endif
}
int freerdp_wsa_cleanup()
{
#ifdef _WIN32
return WSACleanup();
#else
return 0;
#endif
}

View File

@ -46,7 +46,6 @@ int g_thread_count = 0;
static DWORD WINAPI wf_peer_socket_listener(LPVOID lpParam)
{
wfInfo* wfi;
int i, fds;
int rcount;
int max_fds;