VirtualBox

Changeset 18013 in vbox for trunk/src/VBox/NetworkServices


Ignore:
Timestamp:
Mar 17, 2009 11:55:13 AM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
44603
Message:

win DHCP server de-consoled

Location:
trunk/src/VBox/NetworkServices/DHCP
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/NetworkServices/DHCP/Makefile.kmk

    r17822 r18013  
    5555VBoxNetDHCP_LIBS = \
    5656        $(LIB_RUNTIME)
     57       
     58#ifeq ($(KBUILD_TYPE),release)
     59 VBoxNetDHCP_LDFLAGS.win  += /SUBSYSTEM:windows
     60#else
     61# VBoxNetDHCP_LDFLAGS.win += /SUBSYSTEM:console
     62#endif
    5763
    5864
  • trunk/src/VBox/NetworkServices/DHCP/VBoxNetDHCP.cpp

    r17889 r18013  
    20462046}
    20472047
     2048# ifdef RT_OS_WINDOWS
     2049
     2050#include <windows.h>
     2051#include <iprt/mem.h>
     2052
     2053int WINAPI WinMain(          HINSTANCE hInstance,
     2054    HINSTANCE hPrevInstance,
     2055    LPSTR lpCmdLine,
     2056    int nCmdShow
     2057)
     2058{
     2059    int rc = RTR3InitAndSUPLib();
     2060    if (RT_FAILURE(rc))
     2061    {
     2062        RTStrmPrintf(g_pStdErr, "VBoxNetDHCP: RTR3InitAndSupLib failed, rc=%Rrc\n", rc);
     2063        return 1;
     2064    }
     2065
     2066    LPWSTR lpwCmd = GetCommandLineW();
     2067    size_t size = wcslen(lpwCmd);
     2068    size++; /* for null terminator */
     2069
     2070    int argc;
     2071    int ret = 1;
     2072
     2073    LPWSTR * pwArgs = CommandLineToArgvW(lpwCmd,&argc);
     2074    if(pwArgs)
     2075    {
     2076        size+=argc-1; /* null terminators */
     2077        char **argv = (char**)RTMemTmpAlloc(size + argc*sizeof(char*));
     2078        if(argv)
     2079        {
     2080            char *pBuf = (char*)(argv+argc);
     2081            int i;
     2082            for(i = 0; i < argc; i++)
     2083            {
     2084                argv[i] = pBuf;
     2085
     2086                int num = WideCharToMultiByte(
     2087                        CP_ACP, /*UINT CodePage*/
     2088                        0, /*DWORD dwFlags*/
     2089                        pwArgs[i],
     2090                        -1, /*int cchWideChar */
     2091                        argv[i], /*LPSTR lpMultiByteStr*/
     2092                        size, /*int cbMultiByte*/
     2093                        NULL, /*LPCSTR lpDefaultChar*/
     2094                        FALSE/*LPBOOL lpUsedDefaultChar*/
     2095                    );
     2096                if(num <= 0)
     2097                    break;
     2098
     2099                size-=num;
     2100                pBuf+=num;
     2101            }
     2102
     2103            if(i == argc)
     2104            {
     2105                ret = TrustedMain(argc, argv, NULL);
     2106            }
     2107            RTMemFree(argv);
     2108        }
     2109
     2110        LocalFree(pwArgs);
     2111    }
     2112
     2113    return ret;
     2114}
     2115
     2116# endif
     2117
    20482118#endif /* !VBOX_WITH_HARDENING */
    20492119
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette