| 2268 | } |
| 2269 | |
| 2270 | BNKCImage* BNKCViewGetAllImages(BNKernelCache* cache, size_t* count) |
| 2271 | { |
| 2272 | if (cache->object) |
| 2273 | { |
| 2274 | auto viewImageHeaders = cache->object->AllImageHeaders(); |
| 2275 | *count = viewImageHeaders.size(); |
| 2276 | BNKCImage* images = (BNKCImage*)malloc(sizeof(BNKCImage) * viewImageHeaders.size()); |
| 2277 | size_t i = 0; |
| 2278 | for (const auto& [baseAddress, header] : viewImageHeaders) |
| 2279 | { |
| 2280 | images[i].name = BNAllocString(header.installName.c_str()); |
| 2281 | images[i].headerFileAddress = baseAddress; |
| 2282 | images[i].mappingCount = header.sections.size(); |
| 2283 | images[i].mappings = (BNKCImageMemoryMapping*)malloc(sizeof(BNKCImageMemoryMapping) * header.sections.size()); |
| 2284 | for (size_t j = 0; j < header.sections.size(); j++) |
| 2285 | { |
| 2286 | images[i].mappings[j].rawViewOffset = header.sections[j].offset; |
| 2287 | images[i].mappings[j].vmAddress = header.sections[j].addr; |
| 2288 | images[i].mappings[j].size = header.sections[j].size; |
| 2289 | images[i].mappings[j].name = BNAllocString(header.sectionNames[j].c_str()); |
| 2290 | } |
| 2291 | i++; |
| 2292 | } |
| 2293 | return images; |
| 2294 | } |
| 2295 | *count = 0; |
| 2296 | return nullptr; |
| 2297 | } |
| 2298 | |
| 2299 | void BNKCViewFreeAllImages(BNKCImage* images, size_t count) |
| 2300 | { |
no test coverage detected