75 lines
1.6 KiB
C++
75 lines
1.6 KiB
C++
//----------------------------------------------------------------------------
|
|
//
|
|
// Starts a process server and sleeps forever.
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 2000.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#include <stdio.h>
|
|
#include <dbgeng.h>
|
|
|
|
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 <transport>");
|
|
}
|
|
|
|
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();
|
|
}
|