MCPcopy Create free account
hub / github.com/beefytech/Beef / GetMemoryFlags

Method GetMemoryFlags

IDEHelper/WinDebugger.cpp:13806–13844  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13804}
13805
13806DbgMemoryFlags WinDebugger::GetMemoryFlags(intptr address)
13807{
13808 MEMORY_BASIC_INFORMATION memBasicInfo;
13809 if (::VirtualQueryEx(mProcessInfo.hProcess, (void*)address, &memBasicInfo, sizeof(MEMORY_BASIC_INFORMATION)) == 0)
13810 {
13811 //BfLogDbg("VirtualQueryEx failed with %d\n", GetLastError());
13812 return DbgMemoryFlags_None;
13813 }
13814
13815 DbgMemoryFlags flags = DbgMemoryFlags_None;
13816 if (memBasicInfo.AllocationProtect & PAGE_READWRITE)
13817 {
13818 flags = (DbgMemoryFlags)(flags | DbgMemoryFlags_Read);
13819 flags = (DbgMemoryFlags)(flags | DbgMemoryFlags_Write);
13820 }
13821 if (memBasicInfo.AllocationProtect & PAGE_READONLY)
13822 flags = (DbgMemoryFlags)(flags | DbgMemoryFlags_Read);
13823 if (memBasicInfo.AllocationProtect & PAGE_WRITECOPY)
13824 flags = (DbgMemoryFlags)(flags | DbgMemoryFlags_Write);
13825 if (memBasicInfo.AllocationProtect & PAGE_EXECUTE)
13826 flags = (DbgMemoryFlags)(flags | DbgMemoryFlags_Execute);
13827 if (memBasicInfo.AllocationProtect & PAGE_EXECUTE_READ)
13828 {
13829 flags = (DbgMemoryFlags)(flags | DbgMemoryFlags_Execute);
13830 flags = (DbgMemoryFlags)(flags | DbgMemoryFlags_Read);
13831 }
13832 if (memBasicInfo.AllocationProtect & PAGE_EXECUTE_READWRITE)
13833 {
13834 flags = (DbgMemoryFlags)(flags | DbgMemoryFlags_Execute);
13835 flags = (DbgMemoryFlags)(flags | DbgMemoryFlags_Read);
13836 flags = (DbgMemoryFlags)(flags | DbgMemoryFlags_Write);
13837 }
13838 if (memBasicInfo.AllocationProtect & PAGE_EXECUTE_WRITECOPY)
13839 {
13840 flags = (DbgMemoryFlags)(flags | DbgMemoryFlags_Execute);
13841 flags = (DbgMemoryFlags)(flags | DbgMemoryFlags_Write);
13842 }
13843 return flags;
13844}
13845
13846#ifdef BF_DBG_32
13847Debugger* Beefy::CreateDebugger32(DebugManager* debugManager, DbgMiniDump* miniDump)

Callers 2

PhysSetBreakpointMethod · 0.45
ReadMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected