/** * FreeRDP: A Remote Desktop Protocol Implementation * Windows Client * * Copyright 2009-2011 Jay Sorg * Copyright 2010-2011 Vic Lee * Copyright 2010-2011 Marc-Andre Moreau * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include #include #include #include #include #include #include "resource.h" #include "wf_interface.h" INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int index; int status; HANDLE thread; wfContext* wfc; DWORD dwExitCode; rdpContext* context; rdpSettings* settings; RDP_CLIENT_ENTRY_POINTS clientEntryPoints; ZeroMemory(&clientEntryPoints, sizeof(RDP_CLIENT_ENTRY_POINTS)); clientEntryPoints.Size = sizeof(RDP_CLIENT_ENTRY_POINTS); clientEntryPoints.Version = RDP_CLIENT_INTERFACE_VERSION; RdpClientEntry(&clientEntryPoints); context = freerdp_client_context_new(&clientEntryPoints); settings = context->settings; wfc = (wfContext*) context; context->argc = __argc; context->argv = (char**) malloc(sizeof(char*) * __argc); for (index = 0; index < context->argc; index++) context->argv[index] = _strdup(__argv[index]); status = freerdp_client_settings_parse_command_line(settings, context->argc, context->argv); status = freerdp_client_settings_command_line_status_print(settings, status, context->argc, context->argv); if (status) { freerdp_client_context_free(context); return 0; } freerdp_client_start(context); thread = freerdp_client_get_thread(context); WaitForSingleObject(thread, INFINITE); GetExitCodeThread(thread, &dwExitCode); freerdp_client_stop(context); freerdp_client_context_free(context); return 0; }