windows-nt/Source/XPSP1/NT/admin/burnslib/spewview/spewview.cpp
2020-09-26 16:20:57 +08:00

92 lines
2.1 KiB
C++

// Spewview: remote debug spew monitor
//
// Copyright (c) 1999 Microsoft Corp.
//
// 9 November 1999 sburns
#include "headers.hxx"
#include "resource.h"
#include "MainDialog.hpp"
// The general idea is this: The machine running spewview.exe is the observer
// of a spewing application running remotely. This machine is the server.
// The machine running the application that is spewing is the client.
//
// The server should start spewview before the client starts the spewing app.
//
// The server does the following:
// - creates a local pipe object
//
// - sets the ACL on the pipe object to allow everyone write access
//
// - connects to the client machine's registry, creates a volatile reg key
// that contains the name of the server machine, and the name of the
// pipe object.
//
// - spawns a separate thread to read the pipe and forward messages
// to the edit control
//
// The client does the following:
// - reads the registry for the reg values created by the server
//
// - calls CreateFile on \\<server>\pipe\<pipe name> to get a
// handle to the pipe
//
// - spews to the pipe handle
//
// The client is implemented in burnslib\src\log.cpp
HINSTANCE hResourceModuleHandle = 0;
const wchar_t* RUNTIME_NAME = L"spewview";
const wchar_t* HELPFILE_NAME = 0;
DWORD DEFAULT_LOGGING_OPTIONS = OUTPUT_TYPICAL;
Popup popup(IDS_APP_TITLE);
int WINAPI
WinMain(
HINSTANCE hInstance,
HINSTANCE /* hPrevInstance */ ,
LPSTR /* lpszCmdLine */ ,
int /* nCmdShow */ )
{
hResourceModuleHandle = hInstance;
::CoInitialize(0);
try
{
HMODULE m = 0;
HRESULT hr = Win::LoadLibrary(L"riched32.dll", m);
ASSERT(SUCCEEDED(hr));
::InitCommonControls();
MainDialog().ModalExecute(Win::GetDesktopWindow());
}
catch (std::bad_alloc&)
{
popup.Error(
Win::GetDesktopWindow(),
L"Memory Allocation failure caught");
}
catch (...)
{
popup.Error(
Win::GetDesktopWindow(),
L"Unhandled Exception.");
}
return 0;
}