//---------------------------------------------------------------------------- // // Console input and output. // // Copyright (C) Microsoft Corporation, 1999-2000. // //---------------------------------------------------------------------------- #ifndef __CONIO_HPP__ #define __CONIO_HPP__ class DefInputCallbacks : public IDebugInputCallbacks { public: // IUnknown. STDMETHOD(QueryInterface)( THIS_ IN REFIID InterfaceId, OUT PVOID* Interface ); STDMETHOD_(ULONG, AddRef)( THIS ); STDMETHOD_(ULONG, Release)( THIS ); }; class ConInputCallbacks : public DefInputCallbacks { public: // IDebugInputCallbacks. STDMETHOD(StartInput)( THIS_ IN ULONG BufferSize ); STDMETHOD(EndInput)( THIS ); }; class DefOutputCallbacks : public IDebugOutputCallbacks { public: // IUnknown. STDMETHOD(QueryInterface)( THIS_ IN REFIID InterfaceId, OUT PVOID* Interface ); STDMETHOD_(ULONG, AddRef)( THIS ); STDMETHOD_(ULONG, Release)( THIS ); }; class ConOutputCallbacks : public DefOutputCallbacks { public: // IDebugOutputCallbacks. STDMETHOD(Output)( THIS_ IN ULONG Mask, IN PCSTR Text ); }; // Maximum command string. DbgPrompt has a limit of 512 // characters so that would be one potential limit. We // have users who want to use longer command lines, though, // such as Autodump which scripts the debugger with very long // sx commands. The other obvious limit is MAX_SYMBOL_LEN // since it makes sense that you should be able to give a // command with a full symbol name, so use that. #define MAX_COMMAND 4096 #define MAX_DBG_PROMPT_COMMAND 512 extern HANDLE g_ConInput, g_ConOutput; extern HANDLE g_PromptInput; extern HANDLE g_PipeWrite; extern ConInputCallbacks g_ConInputCb; extern ConOutputCallbacks g_ConOutputCb; extern IDebugClient* g_ConClient; extern IDebugControl* g_ConControl; void InitializeIo(PCSTR InputFile); void CreateConsole(void); BOOL ConIn(PSTR Buffer, ULONG BufferSize, BOOL Wait); void ConOut(PCSTR Format, ...); void ConOutStr(PCSTR Str); void DECLSPEC_NORETURN ExitDebugger(ULONG Code); void DECLSPEC_NORETURN ErrorExit(PCSTR Format, ...); void CreateInputThread(void); #endif // #ifndef __CONIO_HPP__