| 1362 | } |
| 1363 | |
| 1364 | BOOL StackWalker::ShowObject(LPVOID pObject) |
| 1365 | { |
| 1366 | // Load modules if not done yet |
| 1367 | if (m_modulesLoaded == FALSE) |
| 1368 | this->LoadModules(); // ignore the result... |
| 1369 | |
| 1370 | // Verify that the DebugHelp.dll was actually found |
| 1371 | if (this->m_sw->m_hDbhHelp == NULL) |
| 1372 | { |
| 1373 | SetLastError(ERROR_DLL_INIT_FAILED); |
| 1374 | return FALSE; |
| 1375 | } |
| 1376 | |
| 1377 | // SymGetSymFromAddr64() is required |
| 1378 | if (this->m_sw->pSGSFA == NULL) |
| 1379 | return FALSE; |
| 1380 | |
| 1381 | // Show object info (SymGetSymFromAddr64()) |
| 1382 | DWORD64 dwAddress = DWORD64(pObject); |
| 1383 | DWORD64 dwDisplacement = 0; |
| 1384 | const SIZE_T symSize = sizeof(IMAGEHLP_SYMBOL64) + STACKWALK_MAX_NAMELEN; |
| 1385 | IMAGEHLP_SYMBOL64* pSym = (IMAGEHLP_SYMBOL64*) malloc(symSize); |
| 1386 | if (!pSym) |
| 1387 | return FALSE; |
| 1388 | memset(pSym, 0, symSize); |
| 1389 | pSym->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL64); |
| 1390 | pSym->MaxNameLength = STACKWALK_MAX_NAMELEN; |
| 1391 | if (this->m_sw->pSGSFA(this->m_hProcess, dwAddress, &dwDisplacement, pSym) == FALSE) |
| 1392 | { |
| 1393 | this->OnDbgHelpErr("SymGetSymFromAddr64", GetLastError(), dwAddress); |
| 1394 | return FALSE; |
| 1395 | } |
| 1396 | // Object name output |
| 1397 | this->OnOutput(pSym->Name); |
| 1398 | |
| 1399 | free(pSym); |
| 1400 | return TRUE; |
| 1401 | }; |
| 1402 | |
| 1403 | BOOL __stdcall StackWalker::myReadProcMem(HANDLE hProcess, |
| 1404 | DWORD64 qwBaseAddress, |
nothing calls this directly
no test coverage detected