コード例 #1
0
Win32CallstackResolver::AddrInfo Win32CallstackResolver::GetAddrInfoForModule(uint32_t moduleId, DWORD64 addr)
{
	wchar_t msg[1024];
	swprintf_s(msg, L"getaddr %d %llu", moduleId, addr);

	AddrInfo *info = (AddrInfo *)SendRecvPipeMessage(msg);
	return info == NULL ? AddrInfo() : *info;
}
コード例 #2
0
ファイル: win32_callstack.cpp プロジェクト: kvark/renderdoc
uint32_t Win32CallstackResolver::GetModuleID(wstring pdbName, GUID guid, DWORD age)
{
  wchar_t msg[1024] = {0};
  swprintf_s(msg, L"getmodule %d  %d %d %d  %d %d %d %d %d %d %d %d  %ls", age, guid.Data1,
             guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3],
             guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7], pdbName.c_str());

  uint32_t *modID = (uint32_t *)SendRecvPipeMessage(msg);

  return modID == NULL ? 0 : *modID;
}
コード例 #3
0
ファイル: win32_callstack.cpp プロジェクト: kvark/renderdoc
std::wstring Win32CallstackResolver::LookupModule(wchar_t *modName, GUID guid, DWORD age)
{
  wchar_t msg[1024] = {0};
  swprintf_s(msg, L"lookup %d  %d %d %d  %d %d %d %d %d %d %d %d  %ls", age, guid.Data1, guid.Data2,
             guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4],
             guid.Data4[5], guid.Data4[6], guid.Data4[7], modName);

  wchar_t *ret = (wchar_t *)SendRecvPipeMessage(msg);

  wstring result = (ret == NULL ? L"" : ret);

  if(result == L"Not Found")
    result = L"";

  return result;
}
コード例 #4
0
void Win32CallstackResolver::SetModuleBaseAddress(uint32_t moduleId, DWORD64 base)
{
	wchar_t msg[1024];
	swprintf_s(msg, L"baseaddr %d %llu", moduleId, base);
	SendRecvPipeMessage(msg);
}