windows-nt/Source/XPSP1/NT/net/upnp/host/upnpcont/exe/main.cpp
2020-09-26 16:20:57 +08:00

88 lines
2.1 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: D L L M A I N . C P P
//
// Contents: DLL entry points for upnpcont.dll
//
// Notes:
//
// Author: mbend 8 Aug 2000
//
//----------------------------------------------------------------------------
#include "pch.h"
#pragma hdrstop
#include "ucres.h"
#include "ucbase.h"
#include "hostp.h"
#include "hostp_i.c"
// Headers of COM objects
#include "Container.h"
CServerAppModule _Module;
BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_UPnPContainer, CContainer)
END_OBJECT_MAP()
/////////////////////////////////////////////////////////////////////////////
//
extern "C"
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpCmdLine, int /*nShowCmd*/)
{
lpCmdLine = GetCommandLine(); //this line necessary for _ATL_MIN_CRT
HRESULT hr = S_OK;
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
TraceHr(ttidError, FAL, hr, FALSE, "WinMain - CoInitializeEx failed!");
if(SUCCEEDED(hr))
{
hr = CoInitializeSecurity(
NULL,
-1,
NULL,
NULL,
RPC_C_AUTHN_LEVEL_CONNECT,
RPC_C_IMP_LEVEL_IMPERSONATE,
NULL,
0,
NULL);
}
_Module.Init(ObjectMap, hInstance);
BOOL bRun = _Module.ParseCommandLine(lpCmdLine, L"{4F0AC159-5804-4aa7-AE91-117D6E67BB9B}", &hr);
if (bRun)
{
_Module.StartMonitor();
hr = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER,
REGCLS_SINGLEUSE | REGCLS_SUSPENDED);
TraceHr(ttidError, FAL, hr, FALSE, "_Module.RegisterClassObjects failed!");
hr = CoResumeClassObjects();
TraceHr(ttidError, FAL, hr, FALSE, "CoResumeClassObjects failed");
MSG msg;
while (GetMessage(&msg, 0, 0, 0))
DispatchMessage(&msg);
_Module.RevokeClassObjects();
// Terminate the shutdown thread
CContainer::DoNormalShutdown();
}
_Module.Term();
CoUninitialize();
return hr;
}