From b4b5f46d7b1c1972717f20eedf24e453c5d77a3c Mon Sep 17 00:00:00 2001 From: Marcos Slomp Date: Fri, 1 Aug 2025 12:53:56 -0700 Subject: [PATCH] speeding up ExternalName queries --- public/client/TracySysTrace.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/public/client/TracySysTrace.cpp b/public/client/TracySysTrace.cpp index 8e7f6139..a8e20c7d 100644 --- a/public/client/TracySysTrace.cpp +++ b/public/client/TracySysTrace.cpp @@ -527,25 +527,23 @@ void SysTraceGetExternalName( uint64_t thread, const char*& threadName, const ch const auto phnd = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid ); if( phnd != INVALID_HANDLE_VALUE ) { - HMODULE modules[1024]; - DWORD needed; - if( _EnumProcessModules( phnd, modules, 1024 * sizeof( HMODULE ), &needed ) != 0 ) + MEMORY_BASIC_INFORMATION vmeminfo; + SIZE_T infosize = VirtualQueryEx( phnd, ptr, &vmeminfo, sizeof( vmeminfo ) ); + if( infosize == sizeof( vmeminfo ) ) { - const auto sz = std::min( DWORD( needed / sizeof( HMODULE ) ), DWORD( 1024 ) ); - for( DWORD i=0; i= (uint64_t)info.lpBaseOfDll && (uint64_t)ptr <= (uint64_t)info.lpBaseOfDll + (uint64_t)info.SizeOfImage ) + char buf2[1024]; + const auto modlen = _GetModuleBaseNameA( phnd, mod, buf2, 1024 ); + if( modlen != 0 ) { - char buf2[1024]; - const auto modlen = _GetModuleBaseNameA( phnd, modules[i], buf2, 1024 ); - if( modlen != 0 ) - { - threadName = CopyString( buf2, modlen ); - threadSent = true; - } + threadName = CopyString( buf2, modlen ); + threadSent = true; } } }