Author: weiden
Date: Sat Jun 30 00:18:47 2007
New Revision: 27339
URL:
http://svn.reactos.org/svn/reactos?rev=27339&view=rev
Log:
Add the vmwaregateway tool source code of Volkmar Uhlig <volkmar(a)ira.uka.de>de>.
Upgraded project file and changed headers to get it to compile.
Added:
trunk/tools/vmwaregateway/ (with props)
trunk/tools/vmwaregateway/servicemgr.cpp (with props)
trunk/tools/vmwaregateway/servicemgr.h (with props)
trunk/tools/vmwaregateway/vmwaregateway.cpp (with props)
trunk/tools/vmwaregateway/vmwaregateway.sln (with props)
trunk/tools/vmwaregateway/vmwaregateway.vcproj (with props)
Propchange: trunk/tools/vmwaregateway/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Jun 30 00:18:47 2007
@@ -1,0 +1,5 @@
+Debug
+Release
+*.ncb
+*.suo
+*.vcproj.*
Added: trunk/tools/vmwaregateway/servicemgr.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/tools/vmwaregateway/servicemgr.cpp…
==============================================================================
--- trunk/tools/vmwaregateway/servicemgr.cpp (added)
+++ trunk/tools/vmwaregateway/servicemgr.cpp Sat Jun 30 00:18:47 2007
@@ -1,0 +1,132 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// (c) 2000 by Volkmar Uhlig, volkmar(a)ira.uka.de,
www.uhlig-langert.de/volkmar
+//
+// all code can be reused and modified
+//
+//
+//
+
+#include <windows.h>
+#include <stdio.h>
+#include "servicemgr.h"
+
+extern void Server();
+
+SERVICE_STATUS ssStatus;
+SERVICE_STATUS_HANDLE sshStatusHandle;
+
+HANDLE hServiceEvent = NULL;
+
+BOOL ReportStatusToSCMgr(DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwCheckPoint,
DWORD dwWaitHint)
+{
+ BOOL fResult;
+ if (dwCurrentState==SERVICE_START_PENDING)
+ ssStatus.dwControlsAccepted=0;
+ else
+ ssStatus.dwControlsAccepted=SERVICE_ACCEPT_STOP; // | SERVICE_ACCEPT_PAUSE_CONTINUE;
+ ssStatus.dwCurrentState=dwCurrentState;
+ ssStatus.dwWin32ExitCode=dwWin32ExitCode;
+ ssStatus.dwCheckPoint=dwCheckPoint;
+ ssStatus.dwWaitHint=dwWaitHint;
+ if (!(fResult = SetServiceStatus(sshStatusHandle, &ssStatus))) {
+ SetEvent(hServiceEvent);
+ }
+ return fResult;
+}
+
+
+void RegisterService(LPCSTR lpszBinaryPathName, LPCSTR lpszDependencies)
+{
+ printf("Create %s Service for executable %s\n", GetServiceName(),
lpszBinaryPathName);
+ SC_HANDLE schService, schSCManager;
+ schSCManager=OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+ if (schSCManager!=NULL) {
+ schService=CreateService(
+ schSCManager,
+ GetServiceName(FALSE),
+ GetServiceName(TRUE),
+ SERVICE_ALL_ACCESS,
+ SERVICE_WIN32_OWN_PROCESS,
+ SERVICE_DEMAND_START,
+ SERVICE_ERROR_NORMAL,
+ (char*)lpszBinaryPathName,
+ NULL, // no load ordering
+ NULL, // no tag id
+ lpszDependencies,
+ NULL, // Local system account
+ NULL); // no pwd
+ if (schService==NULL)
+ printf("CreateService Error: %ld", GetLastError());
+ else
+ printf("CreateService SUCCESS\n");
+ }
+ CloseServiceHandle(schService);
+ CloseServiceHandle(schSCManager);
+}
+
+void UnregisterService() {
+ SC_HANDLE schService, schSCManager;
+ schSCManager=OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+ schService=OpenService(schSCManager,
+ GetServiceName(FALSE),
+ SERVICE_ALL_ACCESS);
+ if (DeleteService(schService))
+ printf("Service %s successfully unregistered.\n", GetServiceName());
+ else
+ printf("Error while unregistering service %s: %ld\n", GetServiceName(),
GetLastError());
+ CloseServiceHandle(schService);
+ CloseServiceHandle(schSCManager);
+}
+
+VOID service_ctrl(DWORD dwCtrlCode) {
+ DWORD dwState = SERVICE_RUNNING;
+ switch(dwCtrlCode) {
+ case SERVICE_CONTROL_STOP:
+ dwState = SERVICE_STOP_PENDING;
+ ReportStatusToSCMgr(
+ SERVICE_STOP_PENDING,
+ NO_ERROR,
+ 1,
+ 3000);
+ SetEvent(hServiceEvent);
+ return;
+ case SERVICE_CONTROL_INTERROGATE:
+ break;
+ default:
+ break;
+ }
+ ReportStatusToSCMgr(dwState, NO_ERROR, 0, 0);
+}
+
+VOID service_main(DWORD dwArgs, LPTSTR *lpszArgv)
+{
+ DWORD dwWait;
+ sshStatusHandle=RegisterServiceCtrlHandler(GetServiceName(),
+ (LPHANDLER_FUNCTION)service_ctrl);
+ if (!sshStatusHandle) goto cleanup;
+ ssStatus.dwServiceType=SERVICE_WIN32_OWN_PROCESS;
+ ssStatus.dwServiceSpecificExitCode=0;
+ if(!ReportStatusToSCMgr(SERVICE_START_PENDING, //service state
+ NO_ERROR, // exit code
+ 1, // checkpoint
+ 3000)) // wait hint
+ goto cleanup;
+ hServiceEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+ if (hServiceEvent == (HANDLE)NULL) goto cleanup;
+ if (!ReportStatusToSCMgr(SERVICE_START_PENDING, NO_ERROR, 2, 3000)) goto cleanup;
+
+ // starting...
+ if (CreateThread(NULL, 4000, LPTHREAD_START_ROUTINE(Server), NULL, 0, NULL)==NULL) goto
cleanup;
+ if (!ReportStatusToSCMgr(SERVICE_RUNNING, NO_ERROR, 0, 0)) goto cleanup;
+
+ dwWait = WaitForSingleObject( hServiceEvent, INFINITE);
+
+cleanup:
+ CloseHandle(hServiceEvent);
+
+ if (sshStatusHandle!=NULL)
+ ReportStatusToSCMgr(SERVICE_STOPPED, 0, 0, 0);
+
+ return;
+}
Propchange: trunk/tools/vmwaregateway/servicemgr.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/tools/vmwaregateway/servicemgr.h
URL:
http://svn.reactos.org/svn/reactos/trunk/tools/vmwaregateway/servicemgr.h?r…
==============================================================================
--- trunk/tools/vmwaregateway/servicemgr.h (added)
+++ trunk/tools/vmwaregateway/servicemgr.h Sat Jun 30 00:18:47 2007
@@ -1,0 +1,19 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// (c) 2000 by Volkmar Uhlig, volkmar(a)ira.uka.de,
www.uhlig-langert.de/volkmar
+//
+// all code can be reused and modified
+//
+//
+//
+
+
+VOID service_ctrl(DWORD dwCtrlCode);
+VOID service_main(DWORD dwArgs, LPTSTR *lpszArgv);
+
+void RegisterService(LPCSTR lpszBinaryPathName, LPCSTR lpszDependencies);
+void UnregisterService();
+
+LPCSTR GetServiceName(BOOL bLongName = FALSE);
+
+extern HANDLE hServiceEvent;
Propchange: trunk/tools/vmwaregateway/servicemgr.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/tools/vmwaregateway/vmwaregateway.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/tools/vmwaregateway/vmwaregateway.…
==============================================================================
--- trunk/tools/vmwaregateway/vmwaregateway.cpp (added)
+++ trunk/tools/vmwaregateway/vmwaregateway.cpp Sat Jun 30 00:18:47 2007
@@ -1,0 +1,307 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// (c) 2000 by Volkmar Uhlig, volkmar(a)ira.uka.de,
www.uhlig-langert.de/volkmar
+//
+// all code can be reused and modified
+//
+//
+//
+
+
+#define WINVER 0x401
+
+#include "winsock2.h"
+#include <stdio.h>
+#include "servicemgr.h"
+
+#define SERVICE_NAME "VMWareGateway"
+#define DISPLAY_NAME "VMWareGateway"
+
+#define SERVER_PORT 567
+#define BUFFER_SIZE 1024
+
+#define PIPE_NAME "\\\\.\\pipe\\vmwaredebug"
+
+const char* errServerBusy = "Server is currently connected\n";
+
+
+// event numbers/index into event array
+#define LISTEN_EVENT 0
+#define IO_EVENT 1
+#define PIPE_CONNECT 2
+#define PIPE_READ 3
+#define SERVICE_EVENT 4
+#define MAX_EVENTS 5
+
+// verbose output - traces a lot
+BOOL verbose = FALSE;
+
+// the central server loop
+void Server()
+{
+ WORD wVersionRequested;
+ WSADATA wsaData;
+ wVersionRequested = MAKEWORD( 2, 2 );
+
+ // socket and pipe handles
+ HANDLE pipe;
+ SOCKET s, conn;
+ WSAEVENT hEvents[MAX_EVENTS];
+ OVERLAPPED ovRead, ovConnect;
+
+ // copy buffers
+ char buffersocket[BUFFER_SIZE];
+ char bufferpipe[BUFFER_SIZE];
+ DWORD dwBytesSocket, dwBytesPipe;
+
+ // booleans of connection states
+ BOOL pipeConnected = FALSE;
+ BOOL socketConnected = FALSE;
+
+ // socket stuff
+ sockaddr_in sockaddr;
+ int err;
+ int addrlen;
+
+ // init network
+ if (err = WSAStartup(wVersionRequested, &wsaData)) {
+ printf("Error initializing network\n");
+ return;
+ }
+
+ // first create the named pipe
+ pipe = CreateNamedPipe(PIPE_NAME,
+ PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
+ 0,
+ 1,
+ 100,
+ 100,
+ NMPWAIT_WAIT_FOREVER,
+ NULL);
+
+ if (pipe == INVALID_HANDLE_VALUE) {
+ printf("Could not create named pipe (%d)\n", GetLastError());
+ exit(0);
+ }
+
+ hEvents[SERVICE_EVENT] = hServiceEvent;
+
+ // now create the listen socket to wait for incoming requests
+ hEvents[LISTEN_EVENT] = WSACreateEvent();
+ hEvents[IO_EVENT] = WSACreateEvent();
+ ovConnect.hEvent = hEvents[PIPE_CONNECT] = CreateEvent(NULL, TRUE, FALSE, NULL);
+ ovRead.hEvent = hEvents[PIPE_READ] = CreateEvent(NULL, TRUE, FALSE, NULL);
+
+ if (hEvents[LISTEN_EVENT] == WSA_INVALID_EVENT ||
+ hEvents[IO_EVENT] == WSA_INVALID_EVENT ||
+ hEvents[PIPE_CONNECT] == NULL ||
+ hEvents[PIPE_READ] == NULL)
+ {
+ printf("Error creating net event\n");
+ return;
+ }
+
+ // async connect to named pipe
+ err = ConnectNamedPipe(pipe, &ovConnect);
+
+ // listen socket
+ s = socket(AF_INET, SOCK_STREAM, 0);
+ if (s == INVALID_SOCKET) {
+ printf("Could not initialize socket (%d)\n", GetLastError());
+ return;
+ }
+ sockaddr.sin_family=AF_INET;
+ sockaddr.sin_port=htons(SERVER_PORT);
+ sockaddr.sin_addr.s_addr = ADDR_ANY;
+
+ err = bind(s, (struct sockaddr*)&sockaddr, sizeof(sockaddr));
+ if (err) {
+ printf("Could not bind socket (%d)\n", GetLastError());
+ return;
+ }
+ err = listen(s, 5);
+ WSAEventSelect(s, hEvents[LISTEN_EVENT], FD_ACCEPT);
+
+
+ // central loop
+ while(1)
+ {
+ DWORD numEvent = WSAWaitForMultipleEvents(MAX_EVENTS, hEvents,
+ FALSE, WSA_INFINITE, TRUE);
+ //printf("Event: %d\n", numEvent);
+ switch(numEvent) {
+ case LISTEN_EVENT:
+ printf("incoming telnet request ");
+ if (!socketConnected) {
+ addrlen = sizeof(sockaddr);
+ conn = accept(s, (struct sockaddr*)&sockaddr, &addrlen);
+ if (conn == INVALID_SOCKET) {
+ printf("error connecting\n");
+ }
+ else {
+ //err = listen(s, 5); relisten???
+ hEvents[IO_EVENT] = WSACreateEvent();
+ WSAEventSelect(conn, hEvents[IO_EVENT], FD_READ|FD_CLOSE);
+ socketConnected = TRUE;
+ printf("accepted\n");
+ }
+ }
+ else {
+ addrlen = sizeof(sockaddr);
+ SOCKET tmp = accept(s, (struct sockaddr*)&sockaddr, &addrlen);
+ send(tmp, errServerBusy, strlen(errServerBusy), 0);
+ closesocket(tmp);
+ printf("denied\n");
+ }
+
+ WSAResetEvent(hEvents[LISTEN_EVENT]);
+ break;
+
+ case IO_EVENT:
+ {
+ WSANETWORKEVENTS NetEvents;
+ WSAEnumNetworkEvents(conn, hEvents[IO_EVENT], &NetEvents);
+ switch(NetEvents.lNetworkEvents)
+ {
+ case FD_READ:
+ dwBytesSocket = recv(conn, buffersocket, sizeof(buffersocket), 0);
+ if (verbose) {
+ buffersocket[dwBytesSocket]=0;
+ printf("%s", buffersocket);
+ }
+ if (pipeConnected) {
+ DWORD dwWritten;
+ WriteFile(pipe, buffersocket, dwBytesSocket, &dwWritten, NULL);
+ }
+ break;
+ case FD_CLOSE:
+ /* connection closed by host */
+ closesocket(conn);
+ socketConnected = FALSE;
+ listen(s, 5);
+ printf("telnet session closed\n");
+ break;
+ }
+
+ } break;
+ case PIPE_CONNECT:
+ if (!GetOverlappedResult(pipe, &ovConnect, &dwBytesPipe, FALSE))
+ {
+ printf("error pipe connect (%d)\n", GetLastError());
+ break;
+ }
+ printf("pipe connected\n");
+ ResetEvent(hEvents[PIPE_CONNECT]);
+ ResetEvent(hEvents[PIPE_READ]);
+ pipeConnected = TRUE;
+
+ ovRead.Offset = 0;
+ ovRead.OffsetHigh = 0;
+ ReadFile(pipe, bufferpipe, sizeof(bufferpipe), &dwBytesPipe, &ovRead);
+ break;
+
+ case PIPE_READ:
+ if (GetOverlappedResult(pipe, &ovRead, &dwBytesPipe, FALSE))
+ {
+ if (verbose) {
+ bufferpipe[dwBytesPipe] = 0;
+ printf(bufferpipe);
+ }
+ if (socketConnected)
+ {
+ send(conn, bufferpipe, dwBytesPipe, 0);
+ }
+ ResetEvent(hEvents[PIPE_READ]);
+ }
+ else
+ {
+ DWORD err = GetLastError();
+ switch (err) {
+ case ERROR_BROKEN_PIPE: /* disconnect and reconnect pipe */
+ DisconnectNamedPipe(pipe);
+ ConnectNamedPipe(pipe, &ovConnect);
+ ResetEvent(hEvents[PIPE_CONNECT]);
+ ResetEvent(hEvents[PIPE_READ]);
+ pipeConnected = FALSE;
+ printf("pipe disconnected\n");
+ continue;break;
+ }
+ }
+ ovRead.Offset = 0;
+ ovRead.OffsetHigh = 0;
+ ReadFile(pipe, bufferpipe, sizeof(bufferpipe), &dwBytesPipe, &ovRead);
+ break;
+ }
+ }
+ WSACleanup();
+}
+
+LPCSTR GetServiceName(BOOL bLongName)
+{
+ if (bLongName)
+ return DISPLAY_NAME;
+ else
+ return SERVICE_NAME;
+}
+
+void ShowHelp() {
+ printf("Named pipe <-> telnet server for Windows NT/2000 (use on your own
risk :)\n"
+ "Volkmar Uhlig (volkmar(a)ira.uka.de),
www.uhlig-langert.de/volkmar\n\n"
+ "Commands:\n"
+ "\t/R register as a service\n"
+ "\t/U unregister service\n"
+ "\t/T testmode\n"
+ "\t/V verbose mode\n"
+ "\nThe pipe name is \"%s\" and the telnet port is %d.\n",
PIPE_NAME, SERVER_PORT);
+}
+
+BOOL CheckArg(int argc, char * argv[], char * arg)
+{
+ for (int i=1; i<argc; i++)
+ if (_stricmp(argv[i], arg) == 0) return TRUE;
+ return FALSE;
+}
+
+int main(int argc, char* argv[])
+{
+ char modulename[512];
+ GetModuleFileName(NULL, modulename, sizeof(modulename));
+ if (argc > 1) {
+ if (CheckArg(argc, argv, "/v"))
+ {
+ verbose = TRUE;
+ printf("verbose mode\n");
+ }
+
+ if (CheckArg(argc, argv, "/r"))
+ {
+ RegisterService(modulename, "\0\0");
+ return 0;
+ }
+
+ if (CheckArg(argc, argv, "/u"))
+ {
+ UnregisterService();
+ return 0;
+ }
+
+ if (CheckArg(argc, argv, "/t")) {
+ printf("test mode - press Ctrl+C to stop program\n");
+ hServiceEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
+ Server();
+ CloseHandle(hServiceEvent);
+ return 0;
+ }
+
+ ShowHelp();
+ }
+ else {
+ SERVICE_TABLE_ENTRY dispatchTable[] =
+ {
+ { TEXT(SERVICE_NAME), (LPSERVICE_MAIN_FUNCTION)service_main},
+ { NULL, NULL }
+ };
+ StartServiceCtrlDispatcher(dispatchTable);
+ }
+ return 0;
+}
Propchange: trunk/tools/vmwaregateway/vmwaregateway.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/tools/vmwaregateway/vmwaregateway.sln
URL:
http://svn.reactos.org/svn/reactos/trunk/tools/vmwaregateway/vmwaregateway.…
==============================================================================
--- trunk/tools/vmwaregateway/vmwaregateway.sln (added)
+++ trunk/tools/vmwaregateway/vmwaregateway.sln Sat Jun 30 00:18:47 2007
@@ -1,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vmwaregateway",
"vmwaregateway.vcproj", "{AF9DB704-DF0A-4DA0-8B73-676F07538978}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {AF9DB704-DF0A-4DA0-8B73-676F07538978}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AF9DB704-DF0A-4DA0-8B73-676F07538978}.Debug|Win32.Build.0 = Debug|Win32
+ {AF9DB704-DF0A-4DA0-8B73-676F07538978}.Release|Win32.ActiveCfg = Release|Win32
+ {AF9DB704-DF0A-4DA0-8B73-676F07538978}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
Propchange: trunk/tools/vmwaregateway/vmwaregateway.sln
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/tools/vmwaregateway/vmwaregateway.vcproj
URL:
http://svn.reactos.org/svn/reactos/trunk/tools/vmwaregateway/vmwaregateway.…
==============================================================================
--- trunk/tools/vmwaregateway/vmwaregateway.vcproj (added)
+++ trunk/tools/vmwaregateway/vmwaregateway.vcproj Sat Jun 30 00:18:47 2007
@@ -1,0 +1,268 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="vmwaregateway"
+ ProjectGUID="{AF9DB704-DF0A-4DA0-8B73-676F07538978}"
+ RootNamespace="vmwaregateway"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/vmwaregateway.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderThrough=""
+ PrecompiledHeaderFile=""
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="odbc32.lib odbccp32.lib ws2_32.lib"
+ OutputFile=".\Debug/vmwaregateway.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\Debug/vmwaregateway.pdb"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile=".\Debug/vmwaregateway.bsc"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/vmwaregateway.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderThrough=""
+ PrecompiledHeaderFile=""
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="odbc32.lib odbccp32.lib ws2_32.lib"
+ OutputFile=".\Release/vmwaregateway.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ ProgramDatabaseFile=".\Release/vmwaregateway.pdb"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile=".\Release/vmwaregateway.bsc"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath="servicemgr.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="vmwaregateway.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath="servicemgr.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Propchange: trunk/tools/vmwaregateway/vmwaregateway.vcproj
------------------------------------------------------------------------------
svn:eol-style = CRLF