| 157 | } |
| 158 | |
| 159 | size_t GetModuleNameFromAddress(void* address, char* moduleName, size_t size) |
| 160 | { |
| 161 | if (size) *moduleName = 0; |
| 162 | { |
| 163 | const char* sourceName; |
| 164 | IMAGEHLP_MODULE moduleInfo = { sizeof (moduleInfo) }; |
| 165 | if (!SymGetModuleInfo(GetSymHandle(), CheckAddress(address), &moduleInfo)) { |
| 166 | return 0; |
| 167 | } |
| 168 | sourceName = strrchr(moduleInfo.ImageName, '\\'); |
| 169 | if (sourceName) { |
| 170 | sourceName++; |
| 171 | } else { |
| 172 | sourceName = moduleInfo.ImageName; |
| 173 | } |
| 174 | if (size) { |
| 175 | strncpy(moduleName, sourceName, size)[size - 1] = 0; |
| 176 | } |
| 177 | return strlen(sourceName); |
| 178 | } |
| 179 | } |
| 180 | |
| 181 | size_t GetModuleNameFromStack(size_t skip, char* moduleName, size_t size) |
| 182 | { |
no test coverage detected