All pastes #368950 Raw Edit

kxMemoryChunk.h 2

public text v1 · immutable
#368950 ·published 2007-02-23 13:52 UTC
rendered paste body
#ifndef KX_MEMORY_CHUNK_H
#define KX_MEMORY_CHUNK_H

#include <windows.h>
#include <DbgHelp.h>
#include <string>
#include <vector>

struct ModuleEntry
{
	std::string imageName;
	std::string moduleName;
	DWORD baseAddress;
	DWORD size;
};
typedef std::vector< ModuleEntry > ModuleList;
typedef ModuleList::iterator ModuleListIter;

class kxMemoryChunk
{
public: // Methods

	kxMemoryChunk(size_t size = 0);
	~kxMemoryChunk();

	void* operator new(size_t size);

	
	void operator delete(void* ptr);

	static kxMemoryChunk* GetBegin();
	static kxMemoryChunk* GetEnd();
	static unsigned long int GetCount();
	
	static void Delete(void* data_ptr);
	static void Check();

protected:
	static void LazyInit();
	static bool LazyInitSymbols();
	static void LazyCleanup();
	static void Dump(kxMemoryChunk* chunk);

	static bool LazyLoadSymbols( HANDLE hProcess, DWORD pid );
	static bool FillModuleList( ModuleList& modules, DWORD pid, HANDLE hProcess );
	static bool FillModuleListTH32( ModuleList& modules, DWORD pid );
	static bool FillModuleListPSAPI( ModuleList& modules, DWORD pid, HANDLE hProcess );


public:  // DATA
	STACKFRAME m_StackFrame;
	CONTEXT    m_Context;	
	kxMemoryChunk* m_Prev;
	kxMemoryChunk* m_Next;
	void* m_Data;
	size_t m_Size;

	static HMODULE m_hImagehlpDll;
	static DWORD m_ImageType;
	static HANDLE m_hProcess;
	static HANDLE m_hThread;

protected: // Vsechno zverstvo se deje zde...
	static kxMemoryChunk* m_Begin;
	static kxMemoryChunk* m_End;
	static unsigned long int m_Count; 
	static bool m_SymbolsInited;

};

void* operator new(size_t size);
void operator delete(void* ptr);

#endif // KX_MEMORY_CHUNK_H