//---------------------------------------------------------------------------- // // Starts a process server and sleeps forever. // // Copyright (C) Microsoft Corporation, 2000. // //---------------------------------------------------------------------------- #include #include PDEBUG_CLIENT2 g_Client2; void DECLSPEC_NORETURN Panic(HRESULT Status, char* Format, ...) { va_list Args; char Msg[256]; char Err[80]; va_start(Args, Format); _vsnprintf(Msg, sizeof(Msg), Format, Args); va_end(Args); sprintf(Err, "Error 0x%08X", Status); MessageBox(GetDesktopWindow(), Msg, Err, MB_OK); exit(1); } void __cdecl main(int Argc, char** Argv) { PSTR Options; while (--Argc > 0) { Argv++; break; } if (Argc != 1) { Panic(E_INVALIDARG, "Usage: dbgsrv "); } Options = *Argv; HRESULT Status; PDEBUG_CLIENT Client; if ((Status = DebugCreate(__uuidof(IDebugClient), (void**)&Client)) != S_OK) { Panic(Status, "DebugCreate"); } if ((Status = Client->QueryInterface(__uuidof(IDebugClient2), (void**)&g_Client2)) != S_OK) { Panic(Status, "dbgeng version 2 is required"); } Client->Release(); if ((Status = g_Client2-> StartProcessServer(DEBUG_CLASS_USER_WINDOWS, Options, NULL)) != S_OK) { Panic(Status, "StartProcessServer"); } g_Client2->WaitForProcessServerEnd(INFINITE); g_Client2->EndSession(DEBUG_END_REENTRANT); g_Client2->Release(); }