/*++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Copyright (c) 2000 Microsoft Corporation Module Name: entry.c Abstract: Implements the WinMain() application entry point. Author: Paul M Midgen (pmidge) 07-June-2000 Revision History: 07-June-2000 pmidge Created =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--*/ #include "common.h" void _SetCurrentDirectory(void); BOOL Initialize(void); void Terminate(void); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { _SetCurrentDirectory(); DEBUG_INITIALIZE(); DEBUG_ENTER(( DBG_APP, rt_dword, "WinMain", "hInstance=%#x; hPrevInstance=%#x; cmdline=%s; cmdshow=%d", hInstance, hPrevInstance, szCmdLine, iCmdShow )); DWORD dwRet = ERROR_SUCCESS; HRESULT hr = S_OK; CFactory* pcf = NULL; IW3Spoof* pw3s = NULL; if( Initialize() ) { hr = CFactory::Create(&pcf); if( FAILED(hr) ) { DEBUG_TRACE(APP, ("failed to create class factory")); goto quit; } hr = pcf->CreateInstance(NULL, IID_IW3Spoof, (void**) &pw3s); if( FAILED(hr) ) { DEBUG_TRACE(APP, ("failed to create w3spoof interface")); goto quit; } if( szCmdLine && strstr(szCmdLine, "register") ) { goto quit; } pcf->Activate(); pw3s->WaitForUnload(); } else { DEBUG_TRACE(APP, ("application init failed.")); } quit: DEBUG_TRACE(APP, ("starting final cleanup")); SAFETERMINATE(pcf); SAFERELEASE(pw3s); Terminate(); DEBUG_LEAVE(dwRet); DEBUG_TERMINATE(); return dwRet; } void _SetCurrentDirectory(void) { WCHAR path[MAX_PATH+1]; memset((void*) path, 0L, MAX_PATH+1); if( GetModuleFileName(NULL, path, MAX_PATH) ) { *(wcsrchr(path, L'\\')) = L'\0'; SetCurrentDirectory(path); } } BOOL Initialize(void) { BOOL bRet = TRUE; DWORD dwRet = ERROR_SUCCESS; HRESULT hr = S_OK; WSADATA wsd = {0}; hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); if( SUCCEEDED(hr) ) { if( (dwRet = WSAStartup(0x0202, &wsd)) != ERROR_SUCCESS ) { DEBUG_TRACE(APP, ("WSAStartup failed: %d [%s]", dwRet, MapErrorToString(dwRet))); bRet = FALSE; } else { DEBUG_DUMPWSOCKSTATS(wsd); } } else { DEBUG_TRACE(APP, ("CoInitialize failed: %d [%s]", hr, MapHResultToString(hr))); bRet = FALSE; } return bRet; } void Terminate(void) { _GetRootKey(FALSE); WSACleanup(); CoUninitialize(); }