| 13804 | } |
| 13805 | |
| 13806 | DbgMemoryFlags 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 |
| 13847 | Debugger* Beefy::CreateDebugger32(DebugManager* debugManager, DbgMiniDump* miniDump) |
no outgoing calls
no test coverage detected