windows-nt/Source/XPSP1/NT/multimedia/directx/dxg/d3d8/inc/debugmon.hpp
2020-09-26 16:20:57 +08:00

86 lines
2.7 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Copyright (C) Microsoft Corporation, 2000.
//
// debugmon.hpp
//
// Direct3D Debug Monitor
//
///////////////////////////////////////////////////////////////////////////////
#ifndef _DEBUGMON_HPP
#define _DEBUGMON_HPP
#include "d3ddm.hpp"
//////////////////////////////////////////////////////////////////////////
//
// Shared Memory object - creates or attaches to shared memory identified
// by character string name and of the size (in bytes) provided to
// constructor
//
//////////////////////////////////////////////////////////////////////////
class D3DSharedMem
{
private:
HANDLE m_hFileMap;
void* m_pMem;
BOOL m_bAlreadyExisted;
public:
//
// 6/20/2000(RichGr) - IA64: Change first parameter from int to INT_PTR so that
// all parameters are the same length. This is needed to make the va_start
// macro work correctly.
D3DSharedMem(INT_PTR cbSize, const char* pszFormat, ...);
~D3DSharedMem(void);
void* GetPtr(void) { return m_pMem; }
BOOL AlreadyExisted(void) { return m_bAlreadyExisted; }
};
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//
//
//
//////////////////////////////////////////////////////////////////////////
class D3DDebugMonitor
{
public:
D3DDebugMonitor( void );
~D3DDebugMonitor( void );
// communications between target and monitor
DebugTargetContext* m_pTgtCtx;
const DebugMonitorContext* m_pMonCtx;
void* m_pCmdData;
HANDLE m_hTgtEventBP;
HANDLE m_hTgtEventAck;
HANDLE m_hMonEventCmd;
BOOL m_bDbgMonConnectionEnabled;
HRESULT AttachToMonitor( int iMon );
void DetachMonitorConnection( void );
BOOL CheckLostMonitorConnection( void );
inline BOOL MonitorConnected( void ) { return (NULL != m_pMonCtx); }
inline UINT32 MonitorEventBP( void )
{ return MonitorConnected() ? (m_pMonCtx->EventBP) : (0x0); }
BOOL IsEventBreak( UINT32 EventType );
HRESULT MonitorBreakpoint( void );
virtual HRESULT ProcessMonitorCommand( void ) = 0;
inline void StateChanged( UINT32 WhichState )
{ m_pTgtCtx->StateChanged |= WhichState; }
protected:
// shared-memory segments for the communications resources
D3DSharedMem* m_pMonCtxSM;
D3DSharedMem* m_pTgtCtxSM;
D3DSharedMem* m_pCmdDataSM;
};
///////////////////////////////////////////////////////////////////////////////
#endif // _DEBUGMON_HPP