26 lines
635 B
C
26 lines
635 B
C
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "compat/better_winlite.h"
|
||
|
|
||
|
#ifdef _MSC_VER
|
||
|
#define VJOLT_RETURN_ADDRESS() _ReturnAddress()
|
||
|
#else
|
||
|
#define VJOLT_RETURN_ADDRESS() __builtin_return_address(0)
|
||
|
#endif
|
||
|
|
||
|
FORCEINLINE void GetCallingFunctionModulePath( void *pReturnAddress, char *pszModulePath, size_t len )
|
||
|
{
|
||
|
#ifdef _WIN32
|
||
|
MEMORY_BASIC_INFORMATION mbi;
|
||
|
if ( ::VirtualQuery( pReturnAddress, &mbi, sizeof(mbi)) ) {
|
||
|
HMODULE module = reinterpret_cast< HMODULE >( mbi.AllocationBase );
|
||
|
|
||
|
::GetModuleFileNameA( module, pszModulePath, DWORD( len ) );
|
||
|
return;
|
||
|
}
|
||
|
#else
|
||
|
V_strncpy( pszModulePath, "Unknown", len);
|
||
|
#endif
|
||
|
}
|